function HuiaddFavorite(t) {
    t.site = t.site || window.location.href,
    t.name = t.name || document.title;
    try {
        window.external.addFavorite(t.site, t.name)
    } catch (t) {
        try {
            window.sidebar.addPanel(name, site, "")
        } catch (t) {
            $.Huimodalalert("加入收藏失败，请使用Ctrl+D进行添加", 2e3)
        }
    }
}
function Huisethome(t) {
    try {
        t.style.behavior = "url(#default#homepage)",
        t.setHomePage(webSite)
    } catch (t) {
        if (window.netscape) {
            try {
                netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")
            } catch (t) {
                $.Huimodalalert("此操作被浏览器拒绝！\n请在浏览器地址栏输入\"about:config\"并回车\n然后将 [signed.applets.codebase_principal_support]的值设置为'true',双击即可。", 2e3)
            }
            Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch).setCharPref("browser.startup.homepage", url)
        }
    }
}
function Huisidenav(t) {
    $(t).hasClass("open") ? ($(t).removeClass("open"),
    $("body").removeClass("big-page")) : ($(t).addClass("open"),
    $("body").addClass("big-page"))
}
!function() {
    var t;
    navigator.userAgent.match(/IEMobile\/10\.0/) && ((t = document.createElement("style")).appendChild(document.createTextNode("@-ms-viewport{width:auto!important}")),
    document.getElementsByTagName("head")[0].appendChild(t))
}(),
function(t) {
    "function" == typeof define && define.amd ? define(["jquery"], t) : "object" == typeof exports ? module.exports = t(require("jquery")) : t(jQuery)
}(function(c) {
    var i = /\+/g;
    function u(t) {
        return f.raw ? t : encodeURIComponent(t)
    }
    function p(t, e) {
        t = f.raw ? t : function(t) {
            0 === t.indexOf('"') && (t = t.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, "\\"));
            try {
                return t = decodeURIComponent(t.replace(i, " ")),
                f.json ? JSON.parse(t) : t
            } catch (t) {}
        }(t);
        return c.isFunction(e) ? e(t) : t
    }
    var f = c.cookie = function(t, e, i) {
        var s, n;
        if (1 < arguments.length && !c.isFunction(e))
            return "number" == typeof (i = c.extend({}, f.defaults, i)).expires && (s = i.expires,
            (n = i.expires = new Date).setMilliseconds(n.getMilliseconds() + 864e5 * s)),
            document.cookie = [u(t), "=", (n = e,
            u(f.json ? JSON.stringify(n) : String(n))), i.expires ? "; expires=" + i.expires.toUTCString() : "", i.path ? "; path=" + i.path : "", i.domain ? "; domain=" + i.domain : "", i.secure ? "; secure" : ""].join("");
        for (var o = t ? void 0 : {}, a = document.cookie ? document.cookie.split("; ") : [], r = 0, l = a.length; r < l; r++) {
            var h = a[r].split("=")
              , d = (d = h.shift(),
            f.raw ? d : decodeURIComponent(d))
              , h = h.join("=");
            if (t === d) {
                o = p(h, e);
                break
            }
            t || void 0 === (h = p(h)) || (o[d] = h)
        }
        return o
    }
    ;
    f.defaults = {},
    c.removeCookie = function(t, e) {
        return c.cookie(t, "", c.extend({}, e, {
            expires: -1
        })),
        !c.cookie(t)
    }
}),
function(t) {
    "use strict";
    "function" == typeof define && define.amd ? define(["jquery"], t) : t("undefined" != typeof jQuery ? jQuery : window.Zepto)
}(function(A) {
    "use strict";
    var m = {}
      , U = (m.fileapi = void 0 !== A("<input type='file'/>").get(0).files,
    m.formdata = void 0 !== window.FormData,
    !!A.fn.prop);
    function i(t) {
        var e = t.data;
        t.isDefaultPrevented() || (t.preventDefault(),
        A(t.target).ajaxSubmit(e))
    }
    function s(t) {
        var e = t.target
          , i = A(e);
        if (!i.is("[type=submit],[type=image]")) {
            var s = i.closest("[type=submit]");
            if (0 === s.length)
                return;
            e = s[0]
        }
        var n = this;
        "image" == (n.clk = e).type && (void 0 !== t.offsetX ? (n.clk_x = t.offsetX,
        n.clk_y = t.offsetY) : "function" == typeof A.fn.offset ? (s = i.offset(),
        n.clk_x = t.pageX - s.left,
        n.clk_y = t.pageY - s.top) : (n.clk_x = t.pageX - e.offsetLeft,
        n.clk_y = t.pageY - e.offsetTop)),
        setTimeout(function() {
            n.clk = n.clk_x = n.clk_y = null
        }, 100)
    }
    function N() {
        var t;
        A.fn.ajaxSubmit.debug && (t = "[jquery.form] " + Array.prototype.join.call(arguments, ""),
        console && console.log ? console.log(t) : window.opera && window.opera.postError && window.opera.postError(t))
    }
    A.fn.attr2 = function() {
        if (!U)
            return this.attr.apply(this, arguments);
        var t = this.prop.apply(this, arguments);
        return t && t.jquery || "string" == typeof t ? t : this.attr.apply(this, arguments)
    }
    ,
    A.fn.ajaxSubmit = function(l) {
        if (!this.length)
            return N("ajaxSubmit: skipping submit process - no element selected"),
            this;
        var _, S = this, t = ("function" == typeof l ? l = {
            success: l
        } : void 0 === l && (l = {}),
        _ = l.type || this.attr2("method"),
        t = (t = (t = "string" == typeof (t = l.url || this.attr2("action")) ? A.trim(t) : "") || window.location.href || "") && (t.match(/^([^#]+)/) || [])[1],
        l = A.extend(!0, {
            url: t,
            success: A.ajaxSettings.success,
            type: _ || A.ajaxSettings.type,
            iframeSrc: /^https/i.test(window.location.href || "") ? "javascript:false" : "about:blank"
        }, l),
        {});
        if (this.trigger("form-pre-serialize", [this, l, t]),
        t.veto)
            return N("ajaxSubmit: submit vetoed via form-pre-serialize trigger"),
            this;
        if (l.beforeSerialize && !1 === l.beforeSerialize(this, l))
            return N("ajaxSubmit: submit aborted via beforeSerialize callback"),
            this;
        var e = l.traditional
          , E = (void 0 === e && (e = A.ajaxSettings.traditional),
        [])
          , i = this.formToArray(l.semantic, E);
        if (l.data && (l.extraData = l.data,
        h = A.param(l.data, e)),
        l.beforeSubmit && !1 === l.beforeSubmit(i, this, l))
            return N("ajaxSubmit: submit aborted via beforeSubmit callback"),
            this;
        if (this.trigger("form-submit-validate", [i, this, l, t]),
        t.veto)
            return N("ajaxSubmit: submit vetoed via form-submit-validate trigger"),
            this;
        var s, n, o, t = A.param(i, e), a = (h && (t = t ? t + "&" + h : h),
        "GET" == l.type.toUpperCase() ? (l.url += (0 <= l.url.indexOf("?") ? "&" : "?") + t,
        l.data = null) : l.data = t,
        []);
        l.resetForm && a.push(function() {
            S.resetForm()
        }),
        l.clearForm && a.push(function() {
            S.clearForm(l.includeHidden)
        }),
        !l.dataType && l.target ? (s = l.success || function() {}
        ,
        a.push(function(t) {
            var e = l.replaceTarget ? "replaceWith" : "html";
            A(l.target)[e](t).each(s, arguments)
        })) : l.success && a.push(l.success),
        l.success = function(t, e, i) {
            for (var s = l.context || this, n = 0, o = a.length; n < o; n++)
                a[n].apply(s, [t, e, i || S, S])
        }
        ,
        l.error && (n = l.error,
        l.error = function(t, e, i) {
            var s = l.context || this;
            n.apply(s, [t, e, i, S])
        }
        ),
        l.complete && (o = l.complete,
        l.complete = function(t, e) {
            var i = l.context || this;
            o.apply(i, [t, e, S])
        }
        );
        var r, e = 0 < A("input[type=file]:enabled", this).filter(function() {
            return "" !== A(this).val()
        }).length, h = "multipart/form-data", t = S.attr("enctype") == h || S.attr("encoding") == h, h = m.fileapi && m.formdata;
        N("fileAPI :" + h),
        !1 !== l.iframe && (l.iframe || (e || t) && !h) ? l.closeKeepAlive ? A.get(l.closeKeepAlive, function() {
            r = c(i)
        }) : r = c(i) : r = (e || t) && h ? function(t) {
            for (var i = new FormData, e = 0; e < t.length; e++)
                i.append(t[e].name, t[e].value);
            if (l.extraData) {
                var s = function(t) {
                    var e, i, s = A.param(t, l.traditional).split("&"), n = s.length, o = [];
                    for (e = 0; e < n; e++)
                        s[e] = s[e].replace(/\+/g, " "),
                        i = s[e].split("="),
                        o.push([decodeURIComponent(i[0]), decodeURIComponent(i[1])]);
                    return o
                }(l.extraData);
                for (e = 0; e < s.length; e++)
                    s[e] && i.append(s[e][0], s[e][1])
            }
            l.data = null;
            var n = A.extend(!0, {}, A.ajaxSettings, l, {
                contentType: !1,
                processData: !1,
                cache: !1,
                type: _ || "POST"
            });
            l.uploadProgress && (n.xhr = function() {
                var t = A.ajaxSettings.xhr();
                return t.upload && t.upload.addEventListener("progress", function(t) {
                    var e = 0
                      , i = t.loaded || t.position
                      , s = t.total;
                    t.lengthComputable && (e = Math.ceil(i / s * 100)),
                    l.uploadProgress(t, i, s, e)
                }, !1),
                t
            }
            );
            n.data = null;
            var o = n.beforeSend;
            return n.beforeSend = function(t, e) {
                l.formData ? e.data = l.formData : e.data = i,
                o && o.call(this, t, e)
            }
            ,
            A.ajax(n)
        }(i) : A.ajax(l),
        S.removeData("jqxhr").data("jqxhr", r);
        for (var d = 0; d < E.length; d++)
            E[d] = null;
        return this.trigger("form-submit-notify", [this, l]),
        this;
        function c(t) {
            var e, i, h, d, o, c, u, p, f, m, a = S[0], v = A.Deferred();
            if (v.abort = function(t) {
                p.abort(t)
            }
            ,
            t)
                for (i = 0; i < E.length; i++)
                    e = A(E[i]),
                    U ? e.prop("disabled", !1) : e.removeAttr("disabled");
            if ((h = A.extend(!0, {}, A.ajaxSettings, l)).context = h.context || h,
            o = "jqFormIO" + (new Date).getTime(),
            h.iframeTarget ? (s = (c = A(h.iframeTarget)).attr2("name")) ? o = s : c.attr2("name", o) : (c = A('<iframe name="' + o + '" src="' + h.iframeSrc + '" />')).css({
                position: "absolute",
                top: "-1000px",
                left: "-1000px"
            }),
            u = c[0],
            p = {
                aborted: 0,
                responseText: null,
                responseXML: null,
                status: 0,
                statusText: "n/a",
                getAllResponseHeaders: function() {},
                getResponseHeader: function() {},
                setRequestHeader: function() {},
                abort: function(t) {
                    var e = "timeout" === t ? "timeout" : "aborted";
                    N("aborting upload... " + e),
                    this.aborted = 1;
                    try {
                        u.contentWindow.document.execCommand && u.contentWindow.document.execCommand("Stop")
                    } catch (t) {}
                    c.attr("src", h.iframeSrc),
                    p.error = e,
                    h.error && h.error.call(h.context, p, e, t),
                    d && A.event.trigger("ajaxError", [p, h, e]),
                    h.complete && h.complete.call(h.context, p, e)
                }
            },
            (d = h.global) && 0 == A.active++ && A.event.trigger("ajaxStart"),
            d && A.event.trigger("ajaxSend", [p, h]),
            h.beforeSend && !1 === h.beforeSend.call(h.context, p, h))
                return h.global && A.active--,
                v.reject(),
                v;
            if (p.aborted)
                return v.reject(),
                v;
            (t = a.clk) && (s = t.name) && !t.disabled && (h.extraData = h.extraData || {},
            h.extraData[s] = t.value,
            "image" == t.type && (h.extraData[s + ".x"] = a.clk_x,
            h.extraData[s + ".y"] = a.clk_y));
            var g = 1
              , y = 2;
            function w(e) {
                var i = null;
                try {
                    e.contentWindow && (i = e.contentWindow.document)
                } catch (t) {
                    N("cannot get iframe.contentWindow document: " + t)
                }
                if (i)
                    return i;
                try {
                    i = e.contentDocument || e.document
                } catch (t) {
                    N("cannot get iframe.contentDocument: " + t),
                    i = e.document
                }
                return i
            }
            var t = A("meta[name=csrf-token]").attr("content")
              , s = A("meta[name=csrf-param]").attr("content");
            function n() {
                var t = S.attr2("target")
                  , e = S.attr2("action")
                  , i = S.attr("enctype") || S.attr("encoding") || "multipart/form-data";
                a.setAttribute("target", o),
                _ && !/post/i.test(_) || a.setAttribute("method", "POST"),
                e != h.url && a.setAttribute("action", h.url),
                h.skipEncodingOverride || _ && !/post/i.test(_) || S.attr({
                    encoding: "multipart/form-data",
                    enctype: "multipart/form-data"
                }),
                h.timeout && (m = setTimeout(function() {
                    f = !0,
                    k(g)
                }, h.timeout));
                var s = [];
                try {
                    if (h.extraData)
                        for (var n in h.extraData)
                            h.extraData.hasOwnProperty(n) && (A.isPlainObject(h.extraData[n]) && h.extraData[n].hasOwnProperty("name") && h.extraData[n].hasOwnProperty("value") ? s.push(A('<input type="hidden" name="' + h.extraData[n].name + '">').val(h.extraData[n].value).appendTo(a)[0]) : s.push(A('<input type="hidden" name="' + n + '">').val(h.extraData[n]).appendTo(a)[0]));
                    h.iframeTarget || c.appendTo("body"),
                    u.attachEvent ? u.attachEvent("onload", k) : u.addEventListener("load", k, !1),
                    setTimeout(function t() {
                        try {
                            var e = w(u).readyState;
                            N("state = " + e),
                            e && "uninitialized" == e.toLowerCase() && setTimeout(t, 50)
                        } catch (t) {
                            N("Server abort: ", t, " (", t.name, ")"),
                            k(y),
                            m && clearTimeout(m),
                            m = void 0
                        }
                    }, 15);
                    try {
                        a.submit()
                    } catch (t) {
                        document.createElement("form").submit.apply(a)
                    }
                } finally {
                    a.setAttribute("action", e),
                    a.setAttribute("enctype", i),
                    t ? a.setAttribute("target", t) : S.removeAttr("target"),
                    A(s).remove()
                }
            }
            s && t && (h.extraData = h.extraData || {},
            h.extraData[s] = t),
            h.forceSync ? n() : setTimeout(n, 10);
            var b, C, T, x = 50;
            function k(e) {
                if (!p.aborted && !T) {
                    if ((C = w(u)) || (N("cannot access response document"),
                    e = y),
                    e === g && p)
                        return p.abort("timeout"),
                        void v.reject(p, "timeout");
                    if (e == y && p)
                        return p.abort("server abort"),
                        void v.reject(p, "error", "server abort");
                    if (C && C.location.href != h.iframeSrc || f) {
                        u.detachEvent ? u.detachEvent("onload", k) : u.removeEventListener("load", k, !1);
                        var i, e = "success";
                        try {
                            if (f)
                                throw "timeout";
                            var t = "xml" == h.dataType || C.XMLDocument || A.isXMLDoc(C);
                            if (N("isXml=" + t),
                            !t && window.opera && (null === C.body || !C.body.innerHTML) && --x)
                                return N("requeing onLoad callback, DOM not available"),
                                void setTimeout(k, 250);
                            var s, n, o, a = C.body || C.documentElement, r = (p.responseText = a ? a.innerHTML : null,
                            p.responseXML = C.XMLDocument || C,
                            t && (h.dataType = "xml"),
                            p.getResponseHeader = function(t) {
                                return {
                                    "content-type": h.dataType
                                }[t.toLowerCase()]
                            }
                            ,
                            a && (p.status = Number(a.getAttribute("status")) || p.status,
                            p.statusText = a.getAttribute("statusText") || p.statusText),
                            (h.dataType || "").toLowerCase()), l = /(json|script|text)/.test(r);
                            l || h.textarea ? (s = C.getElementsByTagName("textarea")[0]) ? (p.responseText = s.value,
                            p.status = Number(s.getAttribute("status")) || p.status,
                            p.statusText = s.getAttribute("statusText") || p.statusText) : l && (n = C.getElementsByTagName("pre")[0],
                            o = C.getElementsByTagName("body")[0],
                            n ? p.responseText = n.textContent || n.innerText : o && (p.responseText = o.textContent || o.innerText)) : "xml" == r && !p.responseXML && p.responseText && (p.responseXML = D(p.responseText));
                            try {
                                b = M(p, r, h)
                            } catch (t) {
                                e = "parsererror",
                                p.error = i = t || e
                            }
                        } catch (t) {
                            N("error caught: ", t),
                            e = "error",
                            p.error = i = t || e
                        }
                        p.aborted && (N("upload aborted"),
                        e = null),
                        "success" === (e = p.status ? 200 <= p.status && p.status < 300 || 304 === p.status ? "success" : "error" : e) ? (h.success && h.success.call(h.context, b, "success", p),
                        v.resolve(p.responseText, "success", p),
                        d && A.event.trigger("ajaxSuccess", [p, h])) : e && (void 0 === i && (i = p.statusText),
                        h.error && h.error.call(h.context, p, e, i),
                        v.reject(p, "error", i),
                        d && A.event.trigger("ajaxError", [p, h, i])),
                        d && A.event.trigger("ajaxComplete", [p, h]),
                        d && !--A.active && A.event.trigger("ajaxStop"),
                        h.complete && h.complete.call(h.context, p, e),
                        T = !0,
                        h.timeout && clearTimeout(m),
                        setTimeout(function() {
                            h.iframeTarget ? c.attr("src", h.iframeSrc) : c.remove(),
                            p.responseXML = null
                        }, 100)
                    }
                }
            }
            var D = A.parseXML || function(t, e) {
                return window.ActiveXObject ? ((e = new ActiveXObject("Microsoft.XMLDOM")).async = "false",
                e.loadXML(t)) : e = (new DOMParser).parseFromString(t, "text/xml"),
                e && e.documentElement && "parsererror" != e.documentElement.nodeName ? e : null
            }
              , r = A.parseJSON || function(t) {
                return window.eval("(" + t + ")")
            }
              , M = function(t, e, i) {
                var s = t.getResponseHeader("content-type") || ""
                  , n = "xml" === e || !e && 0 <= s.indexOf("xml")
                  , t = n ? t.responseXML : t.responseText;
                return n && "parsererror" === t.documentElement.nodeName && A.error && A.error("parsererror"),
                "string" == typeof (t = i && i.dataFilter ? i.dataFilter(t, e) : t) && ("json" === e || !e && 0 <= s.indexOf("json") ? t = r(t) : ("script" === e || !e && 0 <= s.indexOf("javascript")) && A.globalEval(t)),
                t
            };
            return v
        }
    }
    ,
    A.fn.ajaxForm = function(t) {
        var e;
        return (t = t || {}).delegation = t.delegation && A.isFunction(A.fn.on),
        t.delegation || 0 !== this.length ? t.delegation ? (A(document).off("submit.form-plugin", this.selector, i).off("click.form-plugin", this.selector, s).on("submit.form-plugin", this.selector, t, i).on("click.form-plugin", this.selector, t, s),
        this) : this.ajaxFormUnbind().on("submit.form-plugin", t, i).on("click.form-plugin", t, s) : (e = {
            s: this.selector,
            c: this.context
        },
        !A.isReady && e.s ? (N("DOM not ready, queuing ajaxForm"),
        A(function() {
            A(e.s, e.c).ajaxForm(t)
        })) : N("terminating; zero elements found by selector" + (A.isReady ? "" : " (DOM not ready)")),
        this)
    }
    ,
    A.fn.ajaxFormUnbind = function() {
        return this.unbind("submit.form-plugin click.form-plugin")
    }
    ,
    A.fn.formToArray = function(t, e) {
        var i = [];
        if (0 === this.length)
            return i;
        var s, n, o, a, r, l, h, d, c = this[0], u = this.attr("id"), p = t ? c.getElementsByTagName("*") : c.elements;
        if (p && !/MSIE [678]/.test(navigator.userAgent) && (p = A(p).get()),
        !(p = u && (u = A(':input[form="' + u + '"]').get()).length ? (p || []).concat(u) : p) || !p.length)
            return i;
        for (s = 0,
        r = p.length; s < r; s++)
            if ((d = (a = p[s]).name) && !a.disabled)
                if (t && c.clk && "image" == a.type)
                    c.clk == a && (i.push({
                        name: d,
                        value: A(a).val(),
                        type: a.type
                    }),
                    i.push({
                        name: d + ".x",
                        value: c.clk_x
                    }, {
                        name: d + ".y",
                        value: c.clk_y
                    }));
                else if ((o = A.fieldValue(a, !0)) && o.constructor == Array)
                    for (e && e.push(a),
                    n = 0,
                    l = o.length; n < l; n++)
                        i.push({
                            name: d,
                            value: o[n]
                        });
                else if (m.fileapi && "file" == a.type) {
                    e && e.push(a);
                    var f = a.files;
                    if (f.length)
                        for (n = 0; n < f.length; n++)
                            i.push({
                                name: d,
                                value: f[n],
                                type: a.type
                            });
                    else
                        i.push({
                            name: d,
                            value: "",
                            type: a.type
                        })
                } else
                    null != o && (e && e.push(a),
                    i.push({
                        name: d,
                        value: o,
                        type: a.type,
                        required: a.required
                    }));
        return !t && c.clk && (d = (h = (u = A(c.clk))[0]).name) && !h.disabled && "image" == h.type && (i.push({
            name: d,
            value: u.val()
        }),
        i.push({
            name: d + ".x",
            value: c.clk_x
        }, {
            name: d + ".y",
            value: c.clk_y
        })),
        i
    }
    ,
    A.fn.formSerialize = function(t) {
        return A.param(this.formToArray(t))
    }
    ,
    A.fn.fieldSerialize = function(n) {
        var o = [];
        return this.each(function() {
            var t = this.name;
            if (t) {
                var e = A.fieldValue(this, n);
                if (e && e.constructor == Array)
                    for (var i = 0, s = e.length; i < s; i++)
                        o.push({
                            name: t,
                            value: e[i]
                        });
                else
                    null != e && o.push({
                        name: this.name,
                        value: e
                    })
            }
        }),
        A.param(o)
    }
    ,
    A.fn.fieldValue = function(t) {
        for (var e = [], i = 0, s = this.length; i < s; i++) {
            var n = this[i]
              , n = A.fieldValue(n, t);
            null == n || n.constructor == Array && !n.length || (n.constructor == Array ? A.merge(e, n) : e.push(n))
        }
        return e
    }
    ,
    A.fieldValue = function(t, e) {
        var i = t.name
          , s = t.type
          , n = t.tagName.toLowerCase();
        if ((e = void 0 === e ? !0 : e) && (!i || t.disabled || "reset" == s || "button" == s || ("checkbox" == s || "radio" == s) && !t.checked || ("submit" == s || "image" == s) && t.form && t.form.clk != t || "select" == n && -1 == t.selectedIndex))
            return null;
        if ("select" != n)
            return A(t).val();
        e = t.selectedIndex;
        if (e < 0)
            return null;
        for (var o = [], a = t.options, r = "select-one" == s, l = r ? e + 1 : a.length, h = r ? e : 0; h < l; h++) {
            var d = a[h];
            if (d.selected) {
                var c = (c = d.value) || (d.attributes && d.attributes.value && !d.attributes.value.specified ? d.text : d.value);
                if (r)
                    return c;
                o.push(c)
            }
        }
        return o
    }
    ,
    A.fn.clearForm = function(t) {
        return this.each(function() {
            A("input,select,textarea", this).clearFields(t)
        })
    }
    ,
    A.fn.clearFields = A.fn.clearInputs = function(i) {
        var s = /^(?:color|date|datetime|email|month|number|password|range|search|tel|text|time|url|week)$/i;
        return this.each(function() {
            var t = this.type
              , e = this.tagName.toLowerCase();
            s.test(t) || "textarea" == e ? this.value = "" : "checkbox" == t || "radio" == t ? this.checked = !1 : "select" == e ? this.selectedIndex = -1 : "file" == t ? /MSIE/.test(navigator.userAgent) ? A(this).replaceWith(A(this).clone(!0)) : A(this).val("") : i && (!0 === i && /hidden/.test(t) || "string" == typeof i && A(this).is(i)) && (this.value = "")
        })
    }
    ,
    A.fn.resetForm = function() {
        return this.each(function() {
            "function" != typeof this.reset && ("object" != typeof this.reset || this.reset.nodeType) || this.reset()
        })
    }
    ,
    A.fn.enable = function(t) {
        return void 0 === t && (t = !0),
        this.each(function() {
            this.disabled = !t
        })
    }
    ,
    A.fn.selected = function(e) {
        return void 0 === e && (e = !0),
        this.each(function() {
            var t = this.type;
            "checkbox" == t || "radio" == t ? this.checked = e : "option" == this.tagName.toLowerCase() && (t = A(this).parent("select"),
            e && t[0] && "select-one" == t[0].type && t.find("option").selected(!1),
            this.selected = e)
        })
    }
    ,
    A.fn.ajaxSubmit.debug = !1
}),
function(o, a, i, r) {
    var l = o(a);
    o.fn.lazyload = function(t) {
        var s = this
          , n = {
            threshold: 0,
            failure_limit: 0,
            event: "scroll",
            effect: "show",
            container: a,
            data_attribute: "original",
            skip_invisible: !0,
            appear: null,
            load: null,
            placeholder: ""
        };
        function e() {
            var e = 0;
            s.each(function() {
                var t = o(this);
                if ((!n.skip_invisible || t.is(":visible")) && !o.abovethetop(this, n) && !o.leftofbegin(this, n))
                    if (o.belowthefold(this, n) || o.rightoffold(this, n)) {
                        if (++e > n.failure_limit)
                            return !1
                    } else
                        t.trigger("appear"),
                        e = 0
            })
        }
        return t && (r !== t.failurelimit && (t.failure_limit = t.failurelimit,
        delete t.failurelimit),
        r !== t.effectspeed && (t.effect_speed = t.effectspeed,
        delete t.effectspeed),
        o.extend(n, t)),
        t = n.container === r || n.container === a ? l : o(n.container),
        0 === n.event.indexOf("scroll") && t.on(n.event, e),
        this.each(function() {
            var e = this
              , i = o(e);
            e.loaded = !1,
            i.attr("src") !== r && !1 !== i.attr("src") || i.is("img") && i.attr("src", n.placeholder),
            i.one("appear", function() {
                var t;
                this.loaded || (n.appear && (t = s.length,
                n.appear.call(e, t, n)),
                o("<img />").on("load", function() {
                    var t = i.attr("data-" + n.data_attribute)
                      , t = (i.hide(),
                    i.is("img") ? i.attr("src", t) : i.css("background-image", "url('" + t + "')"),
                    i[n.effect](n.effect_speed),
                    e.loaded = !0,
                    o.grep(s, function(t) {
                        return !t.loaded
                    }));
                    s = o(t),
                    n.load && (t = s.length,
                    n.load.call(e, t, n))
                }).attr("src", i.attr("data-" + n.data_attribute)))
            }),
            0 !== n.event.indexOf("scroll") && i.on(n.event, function() {
                e.loaded || i.trigger("appear")
            })
        }),
        l.on("resize", function() {
            e()
        }),
        /(?:iphone|ipod|ipad).*os 5/gi.test(navigator.appVersion) && l.on("pageshow", function(t) {
            t.originalEvent && t.originalEvent.persisted && s.each(function() {
                o(this).trigger("appear")
            })
        }),
        o(i).ready(function() {
            e()
        }),
        this
    }
    ,
    o.belowthefold = function(t, e) {
        var i = e.container === r || e.container === a ? (a.innerHeight || l.height()) + l.scrollTop() : o(e.container).offset().top + o(e.container).height();
        return i <= o(t).offset().top - e.threshold
    }
    ,
    o.rightoffold = function(t, e) {
        var i = e.container === r || e.container === a ? l.width() + l.scrollLeft() : o(e.container).offset().left + o(e.container).width();
        return i <= o(t).offset().left - e.threshold
    }
    ,
    o.abovethetop = function(t, e) {
        var i = e.container === r || e.container === a ? l.scrollTop() : o(e.container).offset().top;
        return i >= o(t).offset().top + e.threshold + o(t).height()
    }
    ,
    o.leftofbegin = function(t, e) {
        var i = e.container === r || e.container === a ? l.scrollLeft() : o(e.container).offset().left;
        return i >= o(t).offset().left + e.threshold + o(t).width()
    }
    ,
    o.inviewport = function(t, e) {
        return !(o.rightoffold(t, e) || o.leftofbegin(t, e) || o.belowthefold(t, e) || o.abovethetop(t, e))
    }
    ,
    o.extend(o.expr[":"], {
        "below-the-fold": function(t) {
            return o.belowthefold(t, {
                threshold: 0
            })
        },
        "above-the-top": function(t) {
            return !o.belowthefold(t, {
                threshold: 0
            })
        },
        "right-of-screen": function(t) {
            return o.rightoffold(t, {
                threshold: 0
            })
        },
        "left-of-screen": function(t) {
            return !o.rightoffold(t, {
                threshold: 0
            })
        },
        "in-viewport": function(t) {
            return o.inviewport(t, {
                threshold: 0
            })
        },
        "above-the-fold": function(t) {
            return !o.belowthefold(t, {
                threshold: 0
            })
        },
        "right-of-fold": function(t) {
            return o.rightoffold(t, {
                threshold: 0
            })
        },
        "left-of-fold": function(t) {
            return !o.rightoffold(t, {
                threshold: 0
            })
        }
    })
}(jQuery, window, document),
function(v, g, y) {
    "use strict";
    function t(t, e) {
        function a(e, i, s, n) {
            if ("addEventListener"in e)
                try {
                    e.addEventListener(i, s, n)
                } catch (t) {
                    if ("object" != typeof s || !s.handleEvent)
                        throw t;
                    e.addEventListener(i, function(t) {
                        s.handleEvent.call(s, t)
                    }, n)
                }
            else
                "attachEvent"in e && ("object" == typeof s && s.handleEvent ? e.attachEvent("on" + i, function() {
                    s.handleEvent.call(s)
                }) : e.attachEvent("on" + i, s))
        }
        function i(e, i, s, n) {
            if ("removeEventListener"in e)
                try {
                    e.removeEventListener(i, s, n)
                } catch (t) {
                    if ("object" != typeof s || !s.handleEvent)
                        throw t;
                    e.removeEventListener(i, function(t) {
                        s.handleEvent.call(s, t)
                    }, n)
                }
            else
                "detachEvent"in e && ("object" == typeof s && s.handleEvent ? e.detachEvent("on" + i, function() {
                    s.handleEvent.call(s)
                }) : e.detachEvent("on" + i, s))
        }
        function s(t, e) {
            for (var i in e)
                t.setAttribute(i, e[i])
        }
        function n(t, e) {
            0 !== t.className.indexOf(e) && (t.className += " " + e,
            t.className = t.className.replace(/(^\s*)|(\s*$)/g, ""))
        }
        function o(t, e) {
            e = new RegExp("(\\s|^)" + e + "(\\s|$)"),
            t.className = t.className.replace(e, " ").replace(/(^\s*)|(\s*$)/g, "")
        }
        function r(t, e) {
            for (var i in this.options = {
                animate: !0,
                transition: 284,
                label: "Menu",
                insert: "before",
                customToggle: "",
                closeOnNavClick: !1,
                openPos: "relative",
                navClass: "nav-collapse",
                navActiveClass: "js-nav-active",
                jsClass: "js",
                init: function() {},
                open: function() {},
                close: function() {}
            },
            e)
                this.options[i] = e[i];
            if (n(m, this.options.jsClass),
            this.wrapperEl = t.replace("#", ""),
            v.getElementById(this.wrapperEl))
                this.wrapper = v.getElementById(this.wrapperEl);
            else {
                if (!v.querySelector(this.wrapperEl))
                    throw new Error("The nav element you are trying to select doesn't exist");
                this.wrapper = v.querySelector(this.wrapperEl)
            }
            this.wrapper.inner = function(t) {
                if (t.children.length < 1)
                    throw new Error("The Nav container has no containing elements");
                for (var e = [], i = 0; i < t.children.length; i++)
                    1 === t.children[i].nodeType && e.push(t.children[i]);
                return e
            }(this.wrapper),
            h = this.options,
            l = this.wrapper,
            this._init(this)
        }
        g.getComputedStyle || (g.getComputedStyle = function(i) {
            return this.el = i,
            this.getPropertyValue = function(t) {
                var e = /(\-([a-z]){1})/g;
                return e.test(t = "float" === t ? "styleFloat" : t) && (t = t.replace(e, function() {
                    return arguments[2].toUpperCase()
                })),
                i.currentStyle[t] || null
            }
            ,
            this
        }
        );
        var l, h, d, c, u, p, f = v.createElement("style"), m = v.documentElement;
        return r.prototype = {
            destroy: function() {
                this._removeStyles(),
                o(l, "closed"),
                o(l, "opened"),
                o(l, h.navClass),
                o(l, h.navClass + "-" + this.index),
                o(m, h.navActiveClass),
                l.removeAttribute("style"),
                l.removeAttribute("aria-hidden"),
                i(g, "resize", this, !1),
                i(g, "focus", this, !1),
                i(v.body, "touchmove", this, !1),
                i(d, "touchstart", this, !1),
                i(d, "touchend", this, !1),
                i(d, "mouseup", this, !1),
                i(d, "keyup", this, !1),
                i(d, "click", this, !1),
                h.customToggle ? d.removeAttribute("aria-hidden") : d.parentNode.removeChild(d)
            },
            toggle: function() {
                !0 === c && (p ? this.close() : this.open())
            },
            open: function() {
                p || (o(l, "closed"),
                n(l, "opened"),
                n(m, h.navActiveClass),
                n(d, "active"),
                l.style.position = h.openPos,
                s(l, {
                    "aria-hidden": "false"
                }),
                p = !0,
                h.open())
            },
            close: function() {
                p && (n(l, "closed"),
                o(l, "opened"),
                o(m, h.navActiveClass),
                o(d, "active"),
                s(l, {
                    "aria-hidden": "true"
                }),
                h.animate ? (c = !1,
                setTimeout(function() {
                    l.style.position = "absolute",
                    c = !0
                }, h.transition + 10)) : l.style.position = "absolute",
                p = !1,
                h.close())
            },
            resize: function() {
                "none" !== g.getComputedStyle(d, null).getPropertyValue("display") ? (u = !0,
                s(d, {
                    "aria-hidden": "false"
                }),
                l.className.match(/(^|\s)closed(\s|$)/) && (s(l, {
                    "aria-hidden": "true"
                }),
                l.style.position = "absolute"),
                this._createStyles(),
                this._calcHeight()) : (u = !1,
                s(d, {
                    "aria-hidden": "true"
                }),
                s(l, {
                    "aria-hidden": "false"
                }),
                l.style.position = h.openPos,
                this._removeStyles())
            },
            handleEvent: function(t) {
                var e = t || g.event;
                switch (e.type) {
                case "touchstart":
                    this._onTouchStart(e);
                    break;
                case "touchmove":
                    this._onTouchMove(e);
                    break;
                case "touchend":
                case "mouseup":
                    this._onTouchEnd(e);
                    break;
                case "click":
                    this._preventDefault(e);
                    break;
                case "keyup":
                    this._onKeyUp(e);
                    break;
                case "focus":
                case "resize":
                    this.resize(e)
                }
            },
            _init: function() {
                this.index = y++,
                n(l, h.navClass),
                n(l, h.navClass + "-" + this.index),
                n(l, "closed"),
                p = !(c = !0),
                this._closeOnNavClick(),
                this._createToggle(),
                this._transitions(),
                this.resize();
                var t = this;
                setTimeout(function() {
                    t.resize()
                }, 20),
                a(g, "resize", this, !1),
                a(g, "focus", this, !1),
                a(v.body, "touchmove", this, !1),
                a(d, "touchstart", this, !1),
                a(d, "touchend", this, !1),
                a(d, "mouseup", this, !1),
                a(d, "keyup", this, !1),
                a(d, "click", this, !1),
                h.init()
            },
            _createStyles: function() {
                f.parentNode || (f.type = "text/css",
                v.getElementsByTagName("head")[0].appendChild(f))
            },
            _removeStyles: function() {
                f.parentNode && f.parentNode.removeChild(f)
            },
            _createToggle: function() {
                if (h.customToggle) {
                    var t = h.customToggle.replace("#", "");
                    if (v.getElementById(t))
                        d = v.getElementById(t);
                    else {
                        if (!v.querySelector(t))
                            throw new Error("The custom nav toggle you are trying to select doesn't exist");
                        d = v.querySelector(t)
                    }
                } else {
                    t = v.createElement("a");
                    t.innerHTML = h.label,
                    s(t, {
                        href: "#",
                        class: "Hui-nav-toggle"
                    }),
                    "after" === h.insert ? l.parentNode.insertBefore(t, l.nextSibling) : l.parentNode.insertBefore(t, l),
                    d = t
                }
            },
            _closeOnNavClick: function() {
                if (h.closeOnNavClick)
                    for (var i = l.getElementsByTagName("a"), s = this, t = i, e = function(t, e) {
                        a(i[t], "click", function() {
                            u && s.toggle()
                        }, !1)
                    }, n = void 0, o = 0; o < t.length; o++)
                        e.call(n, o, t[o])
            },
            _preventDefault: function(t) {
                if (t.preventDefault)
                    return t.stopImmediatePropagation && t.stopImmediatePropagation(),
                    t.preventDefault(),
                    t.stopPropagation(),
                    !1;
                t.returnValue = !1
            },
            _onTouchStart: function(t) {
                Event.prototype.stopImmediatePropagation || this._preventDefault(t),
                this.startX = t.touches[0].clientX,
                this.startY = t.touches[0].clientY,
                this.touchHasMoved = !1,
                i(d, "mouseup", this, !1)
            },
            _onTouchMove: function(t) {
                (10 < Math.abs(t.touches[0].clientX - this.startX) || 10 < Math.abs(t.touches[0].clientY - this.startY)) && (this.touchHasMoved = !0)
            },
            _onTouchEnd: function(t) {
                this._preventDefault(t),
                u && !this.touchHasMoved && ("touchend" === t.type || 3 !== (t = t || g.event).which && 2 !== t.button) && this.toggle()
            },
            _onKeyUp: function(t) {
                13 === (t || g.event).keyCode && this.toggle()
            },
            _transitions: function() {
                var t, e;
                h.animate && (t = l.style,
                e = "max-height " + h.transition + "ms",
                t.WebkitTransition = t.MozTransition = t.OTransition = t.transition = e)
            },
            _calcHeight: function() {
                for (var t = 0, e = 0; e < l.inner.length; e++)
                    t += l.inner[e].offsetHeight;
                var i = "." + h.jsClass + " ." + h.navClass + "-" + this.index + ".opened{max-height:" + t + "px !important} ." + h.jsClass + " ." + h.navClass + "-" + this.index + ".opened.dropdown-active {max-height:9999px !important}";
                f.styleSheet ? f.styleSheet.cssText = i : f.innerHTML = i
            }
        },
        new r(t,e)
    }
    "undefined" != typeof module && module.exports ? module.exports = t : g.responsiveNav = t
}(document, window, 0),
function(t, e, a) {
    var i, s = "placeholder"in e.createElement("input"), n = "placeholder"in e.createElement("textarea"), o = a.fn, r = a.valHooks, l = a.propHooks;
    function h(t, e) {
        var i = this
          , s = a(i);
        if (i.value == s.attr("placeholder") && s.hasClass("placeholder"))
            if (s.data("placeholder-password")) {
                if (s = s.hide().next().show().attr("id", s.removeAttr("id").data("placeholder-id")),
                !0 === t)
                    return s[0].value = e;
                s.focus()
            } else
                i.value = "",
                s.removeClass("placeholder"),
                i == c() && i.select()
    }
    function d() {
        var e, i, s, n, t = a(this), o = this.id;
        if ("" == this.value) {
            if ("password" == this.type) {
                if (!t.data("placeholder-textinput")) {
                    try {
                        e = t.clone().prop("type", "text")
                    } catch (t) {
                        e = a("<input>").prop(a.extend((i = this,
                        s = {},
                        n = /^jQuery\d+$/,
                        a.each(i.attributes, function(t, e) {
                            e.specified && !n.test(e.name) && (s[e.name] = e.value)
                        }),
                        s), {
                            type: "text"
                        }))
                    }
                    e.removeAttr("name").data({
                        "placeholder-password": t,
                        "placeholder-id": o
                    }).on("focus.placeholder", h),
                    t.data({
                        "placeholder-textinput": e,
                        "placeholder-id": o
                    }).before(e)
                }
                t = t.removeAttr("id").hide().prev().attr("id", o).show()
            }
            t.addClass("placeholder"),
            t[0].value = t.attr("placeholder")
        } else
            t.removeClass("placeholder")
    }
    function c() {
        try {
            return e.activeElement
        } catch (t) {}
    }
    s && n ? (i = o.placeholder = function() {
        return this
    }
    ).input = i.textarea = !0 : ((i = o.placeholder = function() {
        return this.filter((s ? "textarea" : ":input") + "[placeholder]").not(".placeholder").on({
            "focus.placeholder": h,
            "blur.placeholder": d
        }).data("placeholder-enabled", !0).trigger("blur.placeholder"),
        this
    }
    ).input = s,
    i.textarea = n,
    o = {
        get: function(t) {
            var e = a(t)
              , i = e.data("placeholder-password");
            return i ? i[0].value : e.data("placeholder-enabled") && e.hasClass("placeholder") ? "" : t.value
        },
        set: function(t, e) {
            var i = a(t)
              , s = i.data("placeholder-password");
            return s ? s[0].value = e : i.data("placeholder-enabled") ? ("" == e ? (t.value = e,
            t != c() && d.call(t)) : i.hasClass("placeholder") && h.call(t, !0, e) || (t.value = e),
            i) : t.value = e
        }
    },
    s || (r.input = o,
    l.value = o),
    n || (r.textarea = o,
    l.value = o),
    a(function() {
        a(e).delegate("form", "submit.placeholder", function() {
            var t = a(".placeholder", this).each(h);
            setTimeout(function() {
                t.each(d)
            }, 10)
        })
    }),
    a(t).on("beforeunload.placeholder", function() {
        a(".placeholder").each(function() {
            this.value = ""
        })
    }))
}(this, document, jQuery),
function(l) {
    var e = "emailsuggest"
      , i = {
        sugClass: "emailSug",
        domains: ["163.com", "126.com", "sohu.com", "139.com", "sina.com", "qq.com", "gmail.com"]
    };
    function s(t, e) {
        this.$field = l(t),
        this.options = l.extend(!0, {}, i, e),
        this._defaults = i,
        this._domains = this.options.domains,
        this.selectedIndex = 0,
        this.init()
    }
    s.prototype = {
        init: function() {
            this.addEvent()
        },
        addEvent: function() {
            var e, i = this;
            this.$field.on("keyup.ema", function(t) {
                (e = l.trim(this.value)) ? (i.create(this, e),
                i.doSelect(t.keyCode)) : i.hide()
            }).on("blur.ema", function() {
                setTimeout(function() {
                    i.hide()
                }, 200)
            })
        },
        create: function(t, s) {
            var n, o = this, a = [], e = (t = l(t)).offset(), i = t.outerWidth(!0) - 2, t = t.outerHeight(!0), r = e.left, e = e.top + t, t = l('<div class="' + this.options.sugClass + '-wrapper" style="' + ("left: " + r + "px; top: " + e + "px; width: " + i + "px; border: 1px solid #e2e2e2; border-top: 0; display: none") + '" />');
            a.push('<ul class="' + this.options.sugClass + '-list">'),
            r = this.filter(s, this._domains),
            n = r.length,
            l.each(r, function(t, e) {
                var i = o.options.sugClass + "-item";
                o.selectedIndex > n - 1 ? 0 === t && (i += " active",
                o.selectedIndex = 0) : t === o.selectedIndex && (i += " active"),
                a.push('<li class="' + i + '" data-index="' + t + '">' + s.replace(/@.*/, "") + "@" + e + "</li>")
            }),
            a.push("</ul>"),
            a = a.join(""),
            this.$suggest ? (this.$suggest.empty(),
            this.$suggest.append(a)) : (t.append(a),
            l("body").append(t),
            this.$suggest = t,
            this.$suggest.on("mouseenter click", "." + this.options.sugClass + "-item", function(t) {
                var e = l(this)
                  , i = e.parent().children();
                "mouseenter" === t.type ? (e.addClass("active").siblings().removeClass("active"),
                o.selectedIndex = l.inArray(this, i)) : (o.$field.val(i.eq(o.selectedIndex).text()),
                o.hide())
            })),
            this.show()
        },
        doSelect: function(t) {
            var e = l("." + this.options.sugClass + "-item", this.$suggest)
              , i = e.length - 1;
            switch (t) {
            case 13:
                l("li.active", this.$suggest).trigger("click"),
                this.selectedIndex = 0;
                break;
            case 38:
                this.selectedIndex--,
                this.selectedIndex < 0 && (this.selectedIndex = i),
                e.removeClass("active").eq(this.selectedIndex).addClass("active");
                break;
            case 40:
                this.selectedIndex++,
                this.selectedIndex > i && (this.selectedIndex = 0),
                e.removeClass("active").eq(this.selectedIndex).addClass("active")
            }
        },
        filter: function(t, e) {
            var i, s = [], n = t.indexOf("@");
            return -1 < n ? (i = t.substring(n + 1),
            l.each(e, function(t, e) {
                -1 < e.indexOf(i) && s.push(e)
            })) : s = e,
            s
        },
        show: function() {
            this.$suggest && this.$suggest.show()
        },
        hide: function() {
            this.$suggest && this.$suggest.hide()
        }
    },
    l.fn[e] = function(t) {
        return this.each(function() {
            l.data(this, e) || l.data(this, e, new s(this,t))
        })
    }
}(window.jQuery),
window.jQuery.extend({
    format: function(t, e, i) {
        var s = (t = t.toString()).length;
        if (e < s) {
            var n = s % e
              , o = parseInt(s / e)
              , a = []
              , s = t.substr(0, n);
            "" != s && a.push(s);
            for (var r = 0; r < o; r++)
                a.push(t.substr(n + r * e, e));
            t = a.join(i)
        }
        return t
    }
}),
function(g) {
    var y = "iCheck"
      , w = y + "-helper"
      , b = "checkbox"
      , C = "radio"
      , T = "checked"
      , p = "un" + T
      , x = "disabled"
      , f = "determinate"
      , k = "in" + f
      , D = "update"
      , M = "type"
      , _ = "click"
      , S = "touchbegin.i touchend.i"
      , E = "addClass"
      , A = "removeClass"
      , U = "trigger"
      , N = "label"
      , m = "cursor"
      , $ = /ipad|iphone|ipod|android|blackberry|windows phone|opera mini|silk/i.test(navigator.userAgent);
    function I(t, e, i) {
        var s = t[0]
          , n = /er/.test(i) ? k : /bl/.test(i) ? x : T
          , o = i == D ? {
            checked: s[T],
            disabled: s[x],
            indeterminate: "true" == t.attr(k) || "false" == t.attr(f)
        } : s[n];
        if (/^(ch|di|in)/.test(i) && !o)
            O(t, n);
        else if (/^(un|en|de)/.test(i) && o)
            V(t, n);
        else if (i == D)
            for (var a in o)
                (o[a] ? O : V)(t, a, !0);
        else
            e && "toggle" != i || (e || t[U]("ifClicked"),
            o ? s[M] !== C && V(t, n) : O(t, n))
    }
    function O(t, e, i) {
        var s, n, o = t[0], a = t.parent(), r = e == T, l = e == k, h = e == x, d = l ? f : r ? p : "enabled", c = v(t, d + j(o[M])), u = v(t, e + j(o[M]));
        !0 !== o[e] && (!i && e == T && o[M] == C && o.name && (s = t.closest("form"),
        n = 'input[name="' + o.name + '"]',
        (n = s.length ? s.find(n) : g(n)).each(function() {
            this !== o && g(this).data(y) && V(g(this), e)
        })),
        l ? (o[e] = !0,
        o[T] && V(t, T, "force")) : (i || (o[e] = !0),
        r && o[k] && V(t, k, !1)),
        P(t, r, e, i)),
        o[x] && v(t, m, !0) && a.find("." + w).css(m, "default"),
        a[E](u || v(t, e) || ""),
        a.attr("role") && !l && a.attr("aria-" + (h ? x : T), "true"),
        a[A](c || v(t, d) || "")
    }
    function V(t, e, i) {
        var s = t[0]
          , n = t.parent()
          , o = e == T
          , a = e == k
          , r = e == x
          , l = a ? f : o ? p : "enabled"
          , h = v(t, l + j(s[M]))
          , d = v(t, e + j(s[M]));
        !1 !== s[e] && (!a && i && "force" != i || (s[e] = !1),
        P(t, o, l, i)),
        !s[x] && v(t, m, !0) && n.find("." + w).css(m, "pointer"),
        n[A](d || v(t, e) || ""),
        n.attr("role") && !a && n.attr("aria-" + (r ? x : T), "false"),
        n[E](h || v(t, l) || "")
    }
    function H(t, e) {
        t.data(y) && (t.parent().html(t.attr("style", t.data(y).s || "")),
        e && t[U](e),
        t.off(".i").unwrap(),
        g(N + '[for="' + t[0].id + '"]').add(t.closest(N)).off(".i"))
    }
    function v(t, e, i) {
        if (t.data(y))
            return t.data(y).o[e + (i ? "" : "Class")]
    }
    function j(t) {
        return t.charAt(0).toUpperCase() + t.slice(1)
    }
    function P(t, e, i, s) {
        s || (e && t[U]("ifToggled"),
        t[U]("ifChanged")[U]("if" + j(i)))
    }
    g.fn[y] = function(e, i) {
        function t(t) {
            t.each(function() {
                var t = g(this);
                o = t.is(n) ? o.add(t) : o.add(t.find(n))
            })
        }
        var d, s, c, u, p, f, m, v, n = 'input[type="' + b + '"], input[type="' + C + '"]', o = g();
        return /^(check|uncheck|toggle|indeterminate|determinate|disable|enable|update|destroy)$/i.test(e) ? (e = e.toLowerCase(),
        t(this),
        o.each(function() {
            var t = g(this);
            "destroy" == e ? H(t, "ifDestroyed") : I(t, !0, e),
            g.isFunction(i) && i()
        })) : "object" != typeof e && e ? this : (s = (d = g.extend({
            checkedClass: T,
            disabledClass: x,
            indeterminateClass: k,
            labelHover: !0
        }, e)).handle,
        c = d.hoverClass || "hover",
        u = d.focusClass || "focus",
        p = d.activeClass || "active",
        f = !!d.labelHover,
        m = d.labelHoverClass || "hover",
        v = 0 | ("" + d.increaseArea).replace("%", ""),
        s != b && s != C || (n = 'input[type="' + s + '"]'),
        v < -50 && (v = -50),
        t(this),
        o.each(function() {
            var s = g(this)
              , n = (H(s),
            this)
              , t = n.id
              , e = -v + "%"
              , i = 100 + 2 * v + "%"
              , e = {
                position: "absolute",
                top: e,
                left: e,
                display: "block",
                width: i,
                height: i,
                margin: 0,
                padding: 0,
                background: "#fff",
                border: 0,
                opacity: 0
            }
              , i = $ ? {
                position: "absolute",
                visibility: "hidden"
            } : v ? e : {
                position: "absolute",
                opacity: 0
            }
              , o = n[M] == b ? d.checkboxClass || "i" + b : d.radioClass || "i" + C
              , a = g(N + '[for="' + t + '"]').add(s.closest(N))
              , r = !!d.aria
              , l = y + "-" + Math.random().toString(36).substr(2, 6)
              , h = '<div class="' + o + '" ' + (r ? 'role="' + n[M] + '" ' : "");
            r && a.each(function() {
                h += 'aria-labelledby="',
                this.id ? h += this.id : (this.id = l,
                h += l),
                h += '"'
            }),
            h = s.wrap(h + "/>")[U]("ifCreated").parent().append(d.insert),
            o = g('<ins class="' + w + '"/>').css(e).appendTo(h),
            s.data(y, {
                o: d,
                s: s.attr("style")
            }).css(i),
            d.inheritClass && h[E](n.className || ""),
            d.inheritID && t && h.attr("id", y + "-" + t),
            "static" == h.css("position") && h.css("position", "relative"),
            I(s, !0, D),
            a.length && a.on(_ + ".i mouseover.i mouseout.i " + S, function(t) {
                var e = t[M]
                  , i = g(this);
                if (!n[x]) {
                    if (e == _) {
                        if (g(t.target).is("a"))
                            return;
                        I(s, !1, !0)
                    } else
                        f && (/ut|nd/.test(e) ? (h[A](c),
                        i[A](m)) : (h[E](c),
                        i[E](m)));
                    if (!$)
                        return !1;
                    t.stopPropagation()
                }
            }),
            s.on(_ + ".i focus.i blur.i keyup.i keydown.i keypress.i", function(t) {
                var e = t[M]
                  , t = t.keyCode;
                return e != _ && ("keydown" == e && 32 == t ? (n[M] == C && n[T] || (n[T] ? V : O)(s, T),
                !1) : void ("keyup" == e && n[M] == C ? n[T] || O(s, T) : /us|ur/.test(e) && h["blur" == e ? A : E](u)))
            }),
            o.on(_ + " mousedown mouseup mouseover mouseout " + S, function(t) {
                var e = t[M]
                  , i = /wn|up/.test(e) ? p : c;
                if (!n[x]) {
                    if (e == _ ? I(s, !1, !0) : (/wn|er|in/.test(e) ? h[E](i) : h[A](i + " " + p),
                    a.length && f && i == c && a[/ut|nd/.test(e) ? A : E](m)),
                    !$)
                        return !1;
                    t.stopPropagation()
                }
            })
        }))
    }
}(window.jQuery || window.Zepto),
function(a) {
    var r = {
        init: function(n) {
            return this.each(function() {
                var t = this
                  , e = a(t).empty();
                t.opt = a.extend(!0, {}, a.fn.raty.defaults, n),
                e.data("settings", t.opt),
                t.opt.number = r.between(t.opt.number, 0, 20),
                "/" != t.opt.path.substring(t.opt.path.length - 1, t.opt.path.length) && (t.opt.path += "/"),
                "function" == typeof t.opt.score && (t.opt.score = t.opt.score.call(t)),
                t.opt.score && (t.opt.score = r.between(t.opt.score, 0, t.opt.number));
                for (var i = 1; i <= t.opt.number; i++)
                    a("<img />", {
                        src: t.opt.path + (!t.opt.score || t.opt.score < i ? t.opt.starOff : t.opt.starOn),
                        alt: i,
                        title: i <= t.opt.hints.length && null !== t.opt.hints[i - 1] ? t.opt.hints[i - 1] : i
                    }).appendTo(t),
                    t.opt.space && e.append((t.opt.number,
                    ""));
                t.stars = e.children('img:not(".raty-cancel")'),
                t.score = a("<input />", {
                    type: "hidden",
                    name: t.opt.scoreName
                }).appendTo(t),
                t.opt.score && 0 < t.opt.score && (t.score.val(t.opt.score),
                r.roundStar.call(t, t.opt.score)),
                t.opt.iconRange && r.fill.call(t, t.opt.score),
                r.setTarget.call(t, t.opt.score, t.opt.targetKeep);
                var s = t.opt.space ? 4 : 0;
                t.opt.width || (t.opt.number,
                t.opt.size,
                t.opt.number);
                t.opt.cancel && (t.cancel = a("<img />", {
                    src: t.opt.path + t.opt.cancelOff,
                    alt: "x",
                    title: t.opt.cancelHint,
                    class: "raty-cancel"
                }),
                t.opt.cancelPlace,
                t.opt.size),
                t.opt.readOnly ? (r.fixHint.call(t),
                t.cancel && t.cancel.hide()) : (e.css("cursor", "pointer"),
                r.bindAction.call(t))
            })
        },
        between: function(t, e, i) {
            return Math.min(Math.max(parseFloat(t), e), i)
        },
        bindAction: function() {
            var n = this
              , o = a(n)
              , t = (o.mouseleave(function() {
                var t = n.score.val() || void 0;
                r.initialize.call(n, t),
                r.setTarget.call(n, t, n.opt.targetKeep),
                n.opt.mouseover && n.opt.mouseover.call(n, t)
            }),
            n.opt.half ? "mousemove" : "mouseover");
            n.opt.cancel && n.cancel.mouseenter(function() {
                a(this).attr("src", n.opt.path + n.opt.cancelOn),
                n.stars.attr("src", n.opt.path + n.opt.starOff),
                r.setTarget.call(n, null, !0),
                n.opt.mouseover && n.opt.mouseover.call(n, null)
            }).mouseleave(function() {
                a(this).attr("src", n.opt.path + n.opt.cancelOff),
                n.opt.mouseover && n.opt.mouseover.call(n, n.score.val() || null)
            }).click(function(t) {
                n.score.removeAttr("value"),
                n.opt.click && n.opt.click.call(n, null, t)
            }),
            n.stars.bind(t, function(t) {
                var e, i, s = parseInt(this.alt, 10);
                n.opt.half ? (i = .5 < (e = parseFloat((t.pageX - a(this).offset().left) / n.opt.size)) ? 1 : .5,
                s = parseFloat(this.alt) - 1 + i,
                r.fill.call(n, s),
                n.opt.precision && (s = s - i + e),
                r.showHalf.call(n, s)) : r.fill.call(n, s),
                o.data("score", s),
                r.setTarget.call(n, s, !0),
                n.opt.mouseover && n.opt.mouseover.call(n, s, t)
            }).click(function(t) {
                n.score.val(n.opt.half || n.opt.precision ? o.data("score") : this.alt),
                n.opt.click && n.opt.click.call(n, n.score.val(), t)
            })
        },
        cancel: function(t) {
            return a(this).each(function() {
                if (!0 === a(this).data("readonly"))
                    return this;
                (t ? r.click : r.score).call(this, null),
                this.score.removeAttr("value")
            })
        },
        click: function(t) {
            return a(this).each(function() {
                if (!0 === a(this).data("readonly"))
                    return this;
                r.initialize.call(this, t),
                this.opt.click ? this.opt.click.call(this, t) : r.error.call(this, 'you must add the "click: function(score, evt) { }" callback.'),
                r.setTarget.call(this, t, !0)
            })
        },
        error: function(t) {
            a(this).html(t),
            a.error(t)
        },
        fill: function(t) {
            for (var e, i, s, n = this, o = n.stars.length, a = 0, r = 1; r <= o; r++)
                e = n.stars.eq(r - 1),
                n.opt.iconRange && n.opt.iconRange.length > a ? (i = n.opt.iconRange[a],
                s = n.opt.single ? r == t ? i.on || n.opt.starOn : i.off || n.opt.starOff : r <= t ? i.on || n.opt.starOn : i.off || n.opt.starOff,
                r <= i.range && e.attr("src", n.opt.path + s),
                r == i.range && a++) : (s = n.opt.single ? r == t ? n.opt.starOn : n.opt.starOff : r <= t ? n.opt.starOn : n.opt.starOff,
                e.attr("src", n.opt.path + s))
        },
        fixHint: function() {
            var t = a(this)
              , e = parseInt(this.score.val(), 10)
              , i = this.opt.noRatedMsg;
            !isNaN(e) && 0 < e && (i = e <= this.opt.hints.length && null !== this.opt.hints[e - 1] ? this.opt.hints[e - 1] : e),
            t.data("readonly", !0).css("cursor", "default").attr("title", i),
            this.score.attr("readonly", "readonly"),
            this.stars.attr("title", i)
        },
        getScore: function() {
            var t, e = [];
            return a(this).each(function() {
                t = this.score.val(),
                e.push(t ? parseFloat(t) : void 0)
            }),
            1 < e.length ? e : e[0]
        },
        readOnly: function(e) {
            return this.each(function() {
                var t = a(this);
                if (t.data("readonly") === e)
                    return this;
                this.cancel && (e ? this.cancel.hide() : this.cancel.show()),
                e ? (t.unbind(),
                t.children("img").unbind(),
                r.fixHint.call(this)) : (r.bindAction.call(this),
                r.unfixHint.call(this)),
                t.data("readonly", e)
            })
        },
        reload: function() {
            return r.set.call(this, {})
        },
        roundStar: function(t) {
            var e, i = (t - Math.floor(t)).toFixed(2);
            i > this.opt.round.down && (e = this.opt.starOn,
            i < this.opt.round.up && this.opt.halfShow ? e = this.opt.starHalf : i < this.opt.round.full && (e = this.opt.starOff),
            this.stars.eq(Math.ceil(t) - 1).attr("src", this.opt.path + e))
        },
        score: function() {
            return arguments.length ? r.setScore.apply(this, arguments) : r.getScore.call(this)
        },
        set: function(s) {
            return this.each(function() {
                var t = a(this)
                  , e = t.data("settings")
                  , i = t.clone().removeAttr("style").insertBefore(t);
                t.remove(),
                i.raty(a.extend(e, s))
            }),
            a(this.selector)
        },
        setScore: function(t) {
            return a(this).each(function() {
                if (!0 === a(this).data("readonly"))
                    return this;
                r.initialize.call(this, t),
                r.setTarget.call(this, t, !0)
            })
        },
        setTarget: function(t, e) {
            var i, s;
            this.opt.target && (0 == (i = a(this.opt.target)).length && r.error.call(this, "目标选择器无效或丢失!"),
            s = t,
            s = e && void 0 !== s ? "hint" == this.opt.targetType ? null === s && this.opt.cancel ? this.opt.cancelHint : this.opt.hints[Math.ceil(s - 1)] : this.opt.precision ? parseFloat(s).toFixed(1) : parseInt(s, 10) : this.opt.targetText,
            this.opt.targetFormat.indexOf("{score}") < 0 && r.error.call(this, '模版 "{score}" 找不到!'),
            null !== t && (s = this.opt.targetFormat.toString().replace("{score}", s)),
            i.is(":input") ? i.val(s) : i.html(s))
        },
        showHalf: function(t) {
            var e = (t - Math.floor(t)).toFixed(1);
            0 < e && e < .6 && this.stars.eq(Math.ceil(t) - 1).attr("src", this.opt.path + this.opt.starHalf)
        },
        initialize: function(t) {
            t = t ? r.between(t, 0, this.opt.number) : 0,
            r.fill.call(this, t),
            0 < t && (this.opt.halfShow && r.roundStar.call(this, t),
            this.score.val(t))
        },
        unfixHint: function() {
            for (var t = 0; t < this.opt.number; t++)
                this.stars.eq(t).attr("title", t < this.opt.hints.length && null !== this.opt.hints[t] ? this.opt.hints[t] : t);
            a(this).data("readonly", !1).css("cursor", "pointer").removeAttr("title"),
            this.score.attr("readonly", "readonly")
        }
    };
    a.fn.raty = function(t) {
        return r[t] ? r[t].apply(this, Array.prototype.slice.call(arguments, 1)) : "object" != typeof t && t ? void a.error("方法 " + t + " 不存在!") : r.init.apply(this, arguments)
    }
    ,
    a.fn.raty.defaults = {
        cancel: !1,
        cancelHint: "取消评级!",
        cancelOff: "cancel-off.png",
        cancelOn: "cancel-on.png",
        cancelPlace: "left",
        click: void 0,
        half: !1,
        halfShow: !0,
        hints: ["10", "20", "30", "40", "50", "60", "70", "80", "90", "100"],
        iconRange: void 0,
        mouseover: void 0,
        noRatedMsg: "没有额定",
        number: 10,
        path: "images/",
        precision: !1,
        round: {
            down: .25,
            full: .6,
            up: .76
        },
        readOnly: !1,
        score: void 0,
        scoreName: "score",
        single: !1,
        size: 16,
        space: !0,
        starHalf: "star-half.png",
        starOff: "star-off.png",
        starOn: "star-on.png",
        target: void 0,
        targetFormat: "{score}",
        targetKeep: !1,
        targetText: "",
        targetType: "hint",
        width: void 0
    }
}(jQuery),
function(r) {
    r.fn.onePageNav = function(t) {
        var i = r.extend({}, r.fn.onePageNav.defaults, t)
          , a = {
            sections: {},
            bindNav: function(t, e, i) {
                var s = t.parent()
                  , n = t.attr("href")
                  , o = r(window);
                s.hasClass(i.currentClass) || (i.begin && i.begin(),
                a.adjustNav(e, s, i.currentClass),
                o.unbind(".onePageNav"),
                r.scrollTo(n, i.scrollSpeed, {
                    easing: i.easing,
                    offset: {
                        top: -i.scrollOffset
                    },
                    onAfter: function() {
                        i.changeHash && (window.location.hash = n),
                        o.bind("scroll.onePageNav", function() {
                            a.scrollChange(e, i)
                        }),
                        i.end && i.end()
                    }
                }))
            },
            adjustNav: function(t, e, i) {
                t.find("." + i).removeClass(i),
                e.addClass(i)
            },
            getPositions: function(t, i) {
                t = t.find("a");
                (t = "" !== i.filter ? t.filter(i.filter) : t).each(function() {
                    var t = r(this).attr("href")
                      , e = r(t).offset().top;
                    a.sections[t.substr(1)] = Math.round(e) - i.scrollOffset
                })
            },
            getSection: function(t, e) {
                var i, s = "", n = Math.round(r(window).height() * e.scrollThreshold);
                for (i in a.sections)
                    a.sections[i] - n < t && (s = i);
                return s
            },
            scrollChange: function(t, e) {
                a.getPositions(t, e);
                var i = r(window).scrollTop()
                  , i = a.getSection(i, e);
                "" !== i && a.adjustNav(t, t.find("a[href=#" + i + "]").parent(), e.currentClass)
            },
            init: function(e, i) {
                var t = !1
                  , s = e.find("a");
                (s = "" !== i.filter ? s.filter(i.filter) : s).bind("click", function(t) {
                    a.bindNav(r(this), e, i),
                    t.preventDefault()
                }),
                a.getPositions(e, i),
                r(window).bind("scroll.onePageNav", function() {
                    t = !0
                }),
                setInterval(function() {
                    t && (t = !1,
                    a.scrollChange(e, i))
                }, 250)
            }
        };
        return this.each(function() {
            var t = r(this)
              , e = r.meta ? r.extend({}, i, t.data()) : i;
            a.init(t, e)
        })
    }
    ,
    r.fn.onePageNav.defaults = {
        currentClass: "current",
        changeHash: !1,
        easing: "swing",
        filter: "",
        scrollSpeed: 750,
        scrollOffset: 0,
        scrollThreshold: .5,
        begin: !1,
        end: !1
    }
}(jQuery),
jQuery(function(f) {
    f(document).ready(function() {
        var i = []
          , s = []
          , n = 0
          , o = ""
          , a = ""
          , r = ""
          , l = null
          , h = 0
          , d = 0
          , c = 0
          , u = 0
          , p = 0;
        f(window).scroll(function(t) {
            var e = f(this).scrollTop();
            o = n < e ? "down" : "up",
            n = e
        }),
        f.fn.stickUp = function(t) {
            f(this).addClass("stuckMenu");
            var e = 0;
            if (null != t) {
                for (var i in t.parts)
                    t.parts.hasOwnProperty(i) && (s[e] = t.parts[e],
                    e++);
                0 == e && console.log("error:needs arguments"),
                a = t.itemClass,
                r = t.itemHover,
                p = null != t.topMargin ? "auto" == t.topMargin ? parseInt(f(".stuckMenu").css("margin-top")) : isNaN(t.topMargin) && 0 < t.topMargin.search("px") ? parseInt(t.topMargin.replace("px", "")) : isNaN(parseInt(t.topMargin)) ? (console.log("incorrect argument, ignored."),
                0) : parseInt(t.topMargin) : 0,
                l = f("." + a).size()
            }
            h = parseInt(f(this).height()),
            c = parseInt(f(this).css("margin-bottom")),
            u = parseInt(f(this).next().closest("div").css("margin-top")),
            d = parseInt(f(this).offset().top)
        }
        ,
        f(document).on("scroll", function() {
            if (varscroll = parseInt(f(document).scrollTop()),
            null != l)
                for (var t = 0; t < l; t++)
                    i[t] = f("#" + s[t]).offset().top,
                    "down" == o && varscroll > i[t] - 50 && varscroll < i[t] + 50 && (f("." + a).removeClass(r),
                    f("." + a + ":eq(" + t + ")").addClass(r)),
                    "up" == o && (contentView = .4 * f("#" + s[e = t]).height(),
                    testView = i[e] - contentView,
                    varscroll > testView ? (f("." + a).removeClass(r),
                    f("." + a + ":eq(" + e + ")").addClass(r)) : varscroll < 50 && (f("." + a).removeClass(r),
                    f("." + a + ":eq(0)").addClass(r)));
            var e;
            d < varscroll + p && (f(".stuckMenu").addClass("isStuck"),
            f(".stuckMenu").next().closest("div").css({
                "margin-top": h + c + u + "px"
            }, 10),
            f(".stuckMenu").css("position", "fixed"),
            f(".isStuck").css({
                top: "0px"
            }, 10, function() {})),
            varscroll + p < d && (f(".stuckMenu").removeClass("isStuck"),
            f(".stuckMenu").next().closest("div").css({
                "margin-top": u + "px"
            }, 10),
            f(".stuckMenu").css("position", "relative"))
        })
    })
}),
function(o) {
    "use strict";
    function s(t, e) {
        this.name = n,
        this.$ = o(t),
        this.getOptions(e),
        this.init()
    }
    var n = "colorPicker"
      , i = {
        zh_cn: {
            errorTip: "不是有效的颜色值"
        },
        zh_tw: {
            errorTip: "不是有效的顏色值"
        },
        en: {
            errorTip: "Not a valid color value"
        }
    };
    s.DEFAULTS = {
        colors: ["#00BCD4", "#388E3C", "#3280fc", "#3F51B5", "#9C27B0", "#795548", "#F57C00", "#F44336", "#E91E63"],
        pullMenuRight: !0,
        wrapper: "btn-wrapper",
        tileSize: 30,
        lineCount: 5,
        optional: !0,
        tooltip: "top",
        icon: "caret-down"
    },
    s.prototype.init = function() {
        function t() {
            var t = n.val()
              , e = o.zui.Color.isColor(t);
            n.parent().toggleClass("has-error", !(e || i.optional && "" === t)),
            e ? s.setValue(t, !0) : i.optional && "" === t ? n.tooltip("hide") : n.is(":focus") || n.tooltip("show", i.errorTip)
        }
        var i = this.options
          , s = this
          , s = (this.$picker = o('<div class="colorpicker"><button type="button" class="hui-btn hui-dropdown-toggle" data-toggle="dropdown"><span class="cp-title"></span><i class="ic"></i></button><ul class="hui-dropdown-menu clearfix"></ul></div>').addClass(i.wrapper),
        this.$picker.find(".cp-title").toggle(void 0 !== i.title).text(i.title),
        this.$menu = this.$picker.find(".hui-dropdown-menu").toggleClass("pull-right", i.pullMenuRight),
        this.$btn = this.$picker.find(".hui-btn.hui-dropdown-toggle"),
        this.$btn.find(".ic").addClass("icon-" + i.icon),
        i.btnTip && this.$picker.attr("data-toggle", "tooltip").tooltip({
            title: i.btnTip,
            placement: i.tooltip,
            container: "body"
        }),
        this.$.attr("data-provide", null).after(this.$picker),
        this.colors = {},
        o.each(this.options.colors, function(t, e) {
            o.zui.Color.isColor(e) && (e = new o.zui.Color(e),
            s.colors[e.toCssStr()] = e)
        }),
        this.updateColors(),
        this)
          , n = (this.$picker.on("click", ".cp-tile", function() {
            s.setValue(o(this).data("color"))
        }),
        this.$);
        n.is("input:not([type=hidden])") ? (i.tooltip && n.attr("data-toggle", "tooltip").tooltip({
            trigger: "manual",
            placement: i.tooltip,
            tipClass: "tooltip-danger",
            container: "body"
        }),
        n.on("keyup paste input change", t)) : n.appendTo(this.$picker),
        t()
    }
    ,
    s.prototype.addColor = function(t) {
        var e = t.toCssStr()
          , i = this.options
          , t = (this.colors[e] || (this.colors[e] = t),
        o('<a href="###" class="cp-tile"></a>', {
            titile: t
        }).data("color", t).css({
            color: t.contrast().toCssStr(),
            background: e,
            "border-color": .43 < t.luma() ? "#ccc" : "transparent"
        }).attr("data-color", e));
        this.$menu.append(o("<li/>").css({
            width: i.tileSize,
            height: i.tileSize
        }).append(t)),
        i.optional && this.$menu.find(".cp-tile.empty").parent().detach().appendTo(this.$menu)
    }
    ,
    s.prototype.updateColors = function(t) {
        this.$picker;
        var e = this.$menu.empty()
          , i = this.options
          , t = t || this.colors
          , s = this
          , n = 0;
        o.each(t, function(t, e) {
            s.addColor(e),
            n++
        }),
        i.optional && (t = o('<li><a class="cp-tile empty" href="###"></a></li>').css({
            width: i.tileSize,
            height: i.tileSize
        }),
        this.$menu.append(t),
        n++),
        e.css("width", Math.min(n, i.lineCount) * i.tileSize + 6)
    }
    ,
    s.prototype.setValue = function(t, e) {
        var i = this.options
          , s = (this.$menu.find(".cp-tile.active").removeClass("active"),
        "");
        t ? (s = (t = new o.zui.Color(t)).toCssStr().toLowerCase(),
        this.$btn.css({
            background: s,
            color: t.contrast().toCssStr(),
            borderColor: .43 < t.luma() ? "#ccc" : s
        }),
        this.colors[s] || this.addColor(t),
        e || this.$.val().toLowerCase() === s || this.$.val(s).trigger("change"),
        this.$menu.find(".cp-tile[data-color=" + s + "]").addClass("active"),
        this.$.tooltip("hide"),
        this.$.trigger("colorchange", t)) : (this.$btn.attr("style", null),
        e || "" === this.$.val() || this.$.val(s).trigger("change"),
        i.optional && this.$.tooltip("hide"),
        this.$menu.find(".cp-tile.empty").addClass("active"),
        this.$.trigger("colorchange", null)),
        i.updateBorder && o(i.updateBorder).css("border-color", s),
        i.updateBackground && o(i.updateBackground).css("background-color", s),
        i.updateColor && o(i.updateText).css("color", s),
        i.updateText && o(i.updateText).text(s)
    }
    ,
    s.prototype.getOptions = function(t) {
        var t = o.extend({}, s.DEFAULTS, this.$.data(), t)
          , e = ("string" == typeof t.colors && (t.colors = t.colors.split(",")),
        (t.lang || o.zui.clientLang()).toLowerCase());
        t.errorTip || (t.errorTip = i[e].errorTip),
        o.fn.tooltip || (t.btnTip = !1),
        this.options = t
    }
    ,
    o.fn.colorPicker = function(i) {
        return this.each(function() {
            var t = o(this)
              , e = t.data(n);
            e || t.data(n, e = new s(this,"object" == typeof i && i)),
            "string" == typeof i && e[i]()
        })
    }
    ,
    o.fn.colorPicker.Constructor = s,
    o(function() {
        o('[data-provide="colorpicker"]').colorPicker()
    })
}(jQuery),
function(n) {
    n.fn.Huihover = function(e, i, s) {
        e = n.extend({
            className: "hover"
        }, e);
        this.each(function() {
            var t = n(this);
            t.hover(function() {
                t.addClass(e.className),
                i && i()
            }, function() {
                t.removeClass(e.className),
                s && s()
            })
        })
    }
}(window.jQuery),
function(i) {
    i.fn.Huifocusblur = function(e) {
        e = i.extend({
            className: "focus"
        }, e);
        this.each(function() {
            var t = i(this);
            t.focus(function() {
                t.addClass(e.className).removeClass("inputError")
            }),
            t.blur(function() {
                t.removeClass(e.className)
            })
        })
    }
}(window.jQuery),
function(s) {
    s.Huiselect = function(e, t) {
        var i = s(t);
        s(e + " cite").click(function() {
            s(e + " ul").slideToggle()
        }),
        s(e + " ul li a").click(function() {
            var t = s(this).text()
              , t = (s(e + " cite").html(t),
            s(this).attr("selectid"));
            i.val(t),
            s(e + " ul").hide()
        }),
        s(document).click(function() {
            s(e + " ul").hide()
        })
    }
}(window.jQuery),
function(n) {
    n.fn.Huitab = function(i, s) {
        i = n.extend({
            tabBar: ".hui-tab-header span",
            tabCon: ".hui-tab-content",
            className: "current",
            tabEvent: "click",
            index: 0
        }, i);
        this.each(function() {
            var e = n(this);
            e.find(i.tabBar).removeClass(i.className),
            e.find(i.tabBar).eq(i.index).addClass(i.className),
            e.find(i.tabCon).hide(),
            e.find(i.tabCon).eq(i.index).show(),
            e.find(i.tabBar).on(i.tabEvent, function() {
                e.find(i.tabBar).removeClass(i.className),
                n(this).addClass(i.className);
                var t = e.find(i.tabBar).index(this);
                e.find(i.tabCon).hide(),
                e.find(i.tabCon).eq(t).show(),
                s && s()
            })
        })
    }
}(window.jQuery),
function(s) {
    s.fn.Huifold = function(i) {
        i = s.extend({
            titCell: ".hui-fold-header",
            mainCell: ".hui-fold-content",
            type: 1,
            trigger: "click",
            className: "selected",
            speed: "normal",
            openKeys: []
        }, i);
        this.each(function() {
            var t = s(this);
            if (i.openKeys && 0 < i.openKeys.length){
							// for (var e = 0; e < i.openKeys.length; e++)
							//     t.find(i.titCell).eq(i.openKeys[e]).addClass(i.className),
							//     t.find(i.mainCell).eq(i.openKeys[e]).show(),
							//     t.find(i.titCell).eq(i.openKeys[e]).find("b") && t.find(i.titCell).eq(i.openKeys[e]).find("b").html("-");
							for (var e = 0; e < i.openKeys.length+1; e++){
									   t.find('#'+i.openKeys[e]).show();
										 console.log( t.find('#'+i.openKeys[e]).prev(), " t.find('#'+i.openKeys[e]).prev()")
									   t.find('#'+i.openKeys[e]).prev().find("b") && t.find('#'+i.openKeys[e]).prev().find("b").html("-");
								}
						}
               
            t.find(i.titCell).on(i.trigger, function() {
                if (s(this).next().is(":visible")) {
                    if (2 == i.type)
                        return !1;
                    s(this).next().slideUp(i.speed).end().removeClass(i.className),
                    s(this).find("b") && s(this).find("b").html("+")
                } else
                    3 == i.type || (t.find(i.mainCell).slideUp(i.speed),
                    t.find(i.titCell).removeClass(i.className),
                    t.find(i.titCell).find("b") && t.find(i.titCell).find("b").html("+")),
                    s(this).next().slideDown(i.speed).end().addClass(i.className),
                    s(this).find("b") && s(this).find("b").html("-")
            })
        })
    }
}(window.jQuery),
function(p) {
    p.fn.Huitag = function(h) {
        var h = p.extend({
            value: "Hui前端框架,H-ui,辉哥",
            maxlength: 20,
            number: 5,
            tagsDefault: ["Html", "CSS", "JS"]
        }, h)
          , d = 13
          , c = 108
          , u = 32;
        this.each(function() {
            var s = p(this)
              , t = '<div class="hui-tag-wrapper"><div class="hui-tag-editor clearfix"></div><div class="hui-tag-input-wrapper"><input type="text" class="hui-input-text hui-tag-input" maxlength="' + h.maxlength + '" value=""></div><div class="hui-tag-list"><div class="hui-tag-notag" style="display:none">暂无常用标签</div><div class="hui-tag-has"></div></div><input type="hidden" class="hui-tag-val" name="" value="' + h.value + '"></div>'
              , t = (s.append(t),
            s.find(".hui-tag-wrapper"))
              , n = t.find(".hui-tag-editor")
              , o = t.find(".hui-tag-input")
              , e = t.find(".hui-tag-has")
              , a = t.find(".hui-tag-val");
            if (h.tagsDefault) {
                for (var i = h.tagsDefault.length, r = 0; r < i; r++)
                    e.append("<span>" + h.tagsDefault[r] + "</span>");
                e.find("span").on("click", function() {
                    var t = (t = p(this).text()).replace(/(^\s*)|(\s*$)/g, "");
                    if (-1 < a.val().split(",").toString().indexOf(t))
                        return console.log("标签不能重复"),
                        !1;
                    n.append('<span class="hui-tag-token">' + t + "</span>"),
                    function() {
                        var t = ""
                          , e = s.find(".hui-tag-token");
                        if (e.length < 1)
                            return o.val("");
                        for (var i = 0; i < e.length; i++)
                            t += e.eq(i).text() + ",";
                        t = (t = l(t, 1)).join(),
                        a.val(t)
                    }(),
                    p(this).remove()
                })
            }
            function l(t, e) {
                t = t.replace(/(^\s*)|(\s*$)/g, "");
                for (var i = [(t = (t = (t = (t = 1 == e ? t.replace(/(\s)|(，)/g, ",") : t.replace(/(，)/g, ",")).replace(/^,|,$/g, "")).replace(/,+/g, ",")).split(","))[0]], s = 1; s < t.length; s++)
                    t.indexOf(t[s]) == s && "" != t[s] && i.push(t[s]);
                return i
            }
            o.on("keydown", function(t) {
                t = t || window.event;
                if (t.keyCode == d || t.keyCode == c || t.keyCode == u) {
                    t = (t = o.val().replace(/\s+/g, "")).replace(/^,|,$/gi, "");
                    if ("" == (t = p.trim(t)))
                        return !1;
                    o.change()
                }
            }),
            o.on("change", function() {
                var t = o.val()
                  , t = a.val() + "," + t;
                if (t) {
                    var e = '<i class="hui-tag-icon hui-iconfont">&#xe64b;</i>'
                      , i = l(t, 1);
                    if (0 < i.length) {
                        for (var s = 0; s < i.length; s++)
                            e += '<span class="hui-tag-token">' + i[s] + "</span>";
                        a.val(i),
                        n.html(e),
                        o.val("").blur()
                    }
                }
            }),
            p(document).on("click", ".hui-tag-token", function() {
                p(this).remove();
                var t = "";
                if (s.find(".hui-tag-token").length < 1)
                    return a.val(""),
                    !1;
                for (var e = 0; e < s.find(".hui-tag-token").length; e++)
                    t += s.find(".hui-tag-token").eq(e).text() + ",";
                t = t.substring(0, t.length - 1),
                a.val(t)
            }),
            o.change()
        })
    }
}(window.jQuery),
function(e) {
    e.Huitagsmixed = function(t) {
        e(t).each(function() {
            var t = parseInt(10 * Math.random() + 0);
            e(this).addClass("tags" + t)
        })
    }
}(window.jQuery),
function(o) {
    o.fn.Huitextarealength = function(n) {
        n = o.extend({
            minlength: 0,
            maxlength: 300,
            errorClass: "error",
            exceed: !0
        }, n);
        this.each(function() {
            var t, e = o(this), i = e.val(), s = '<p class="hui-textarea-numberbar"><em class="hui-textarea-length">' + i.length + "</em>/" + n.maxlength + "</p>";
            e.parent().append(s),
            e.on("keyup", function() {
                i = e.val(),
                (t = i.length) > n.maxlength ? n.exceed ? e.addClass(n.errorClass) : (i = i.substring(0, n.maxlength),
                e.val(i),
                e.removeClass(n.errorClass)) : t < n.minlength ? e.addClass(n.errorClass) : e.removeClass(n.errorClass),
                e.parent().find(".hui-textarea-length").text(i.length)
            })
        })
    }
}(window.jQuery),
function(c) {
    c.fn.Huipreview = function(d) {
        d = c.extend({
            className: "active",
            bigImgWidth: 300
        }, d);
        this.each(function() {
            var t, h = c(this);
            h.hover(function() {
                clearTimeout(t),
                t = setTimeout(function() {
                    c("#preview-wrapper").remove();
                    var t = h.find("img").attr("src")
                      , e = h.attr("data-src")
                      , i = (h.attr("data-width"),
                    h.attr("data-height"),
                    c(window).width())
                      , s = i / 2
                      , n = h.parent().offset().top
                      , o = h.parent().offset().left
                      , a = h.parent().width()
                      , r = (h.parent().height(),
                    "auto")
                      , l = "auto";
                    if (o + a / 2 < s ? r = a + o + "px" : l = i - o + "px",
                    h.addClass(d.className),
                    "" == e)
                        return !1;
                    s = '<div id="preview-wrapper" style="position: absolute;z-index:999;width:' + d.bigImgWidth + "px;height:auto;top:" + n + "px;right:" + l + ";left:" + r + '"><img src="' + t + '" width="' + d.bigImgWidth + '"></div>',
                    c("body").append(s),
                    a = new Image;
                    a.src = e,
                    a.onload = function() {
                        c("#preview-wrapper").find("img").attr("src", e).css("width", d.bigImgWidth)
                    }
                }, 500)
            }, function() {
                clearTimeout(t),
                h.removeClass(d.className),
                c("#preview-wrapper").remove()
            })
        })
    }
}(window.jQuery),
function(a) {
    a.fn.Huimodalalert = function(n, o) {
        n = a.extend({
            btn: ["确定"],
            content: "弹窗内容",
            speed: "0",
            area: ["400", "auto"]
        }, n);
        this.each(function() {
            var t = a(this)
              , e = 0
              , i = 0
              , i = "auto" == n.area[0] ? (e = "400px",
            "-200px") : (e = n.area[0] + "px",
            -n.area[0] / 2 + "px")
              , e = '<div id="hui-modal-alert" class="hui-modal hui-modal-alert radius" style="width:' + e + ";height:" + ("auto" == n.area[1] ? "auto" : n.area[1] + "px") + ";margin-left:" + i + '"><div class="hui-modal-alert-info">' + n.content + '</div><div class="hui-modal-footer"><button class="hui-btn hui-btn-primary radius">' + n.btn[0] + '</button></div></div><div id="hui-modal-mask" class="hui-modal-mask"></div>';
            function s() {
                a("#hui-modal-alert,#hui-modal-mask").remove(),
                a(document.body).removeClass("hui-modal-open"),
                o && o()
            }
            0 < a("#hui-modal-alert").length && a("#hui-modal-alert,#hui-modal-mask").remove(),
            0 == n.speed ? (a(document.body).addClass("hui-modal-open").append(e),
            a("#hui-modal-alert").fadeIn()) : (a(document.body).addClass("hui-modal-open").append(e),
            a("#hui-modal-alert").find(".hui-modal-footer").remove(),
            a("#hui-modal-alert").fadeIn(),
            setTimeout(function() {
                a("#hui-modal-alert").fadeOut("normal", function() {
                    s()
                })
            }, n.speed)),
            t.find(".hui-modal-footer .hui-btn").on("click", function() {
                a("#hui-modal-alert").fadeOut("normal", function() {
                    s()
                })
            })
        })
    }
}(window.jQuery),
function(e) {
    e.Huialert = function() {
        e(".hui-alert i").Huihover(),
        e(document).on("click", ".hui-alert i", function() {
            var t = e(this).parents(".hui-alert");
            t.fadeOut("normal", function() {
                t.remove()
            })
        })
    }
    ,
    e.Huialert()
}(window.jQuery),
function(i) {
    i.Huitotop = function(t) {
        i('<a href="javascript:void(0)" class="hui-tools-right hui-totop hui-iconfont" title="返回顶部" alt="返回顶部" style="display:none;bottom:' + (t = t || 60) + 'px">&#xe684;</a>').appendTo(i("body")).click(function() {
            i("html, body").animate({
                scrollTop: 0
            }, 120)
        });
        i(window).on("scroll", function() {
            var t = i(document).scrollTop()
              , e = i(window).height();
            0 < t ? i(".hui-totop").show() : i(".hui-totop").hide(),
            window.XMLHttpRequest || i(".hui-totop").css("top", t + e - 166)
        })
    }
}(window.jQuery),
function(a) {
    a.fn.Huimarquee = function(o) {
        o = a.extend({
            height: 22,
            speed: 3e3,
            delay: 30
        }, o);
        this.each(function() {
            var t, e, i, s, n = a(this);
            n.find(".hui-marquee-content").height() > o.height && (t = !1,
            n.append(n.html()),
            n.mouseover(function() {
                t = !0
            }),
            n.mouseout(function() {
                t = !1
            }),
            n.scrollTop(0),
            i = function() {
                e = setInterval(s, o.speed),
                t || n.scrollTop(n.scrollTop() + 2)
            }
            ,
            s = function() {
                n.scrollTop() % o.height != 0 ? (Sthat.scrollTop(n.scrollTop() + 2),
                n.scrollTop() >= n.height() / 2 && n.scrollTop(0)) : (clearInterval(e),
                setTimeout(i, o.delay))
            }
            ,
            setTimeout(i, o.delay))
        })
    }
}(window.jQuery),
function(h) {
    h.fn.Huispinner = function(o, a) {
        var o = h.extend({
            value: 1,
            minValue: 1,
            maxValue: 999,
            dis: 1
        }, o)
          , r = 38
          , l = 40;
        this.each(function() {
            var t = h(this)
              , e = '<div class="hui-input-number"><a class="decrease" href="javascript:void(0)"><i>-</i></a><input class="amount hui-input-text" value="' + o.value + '" autocomplete="off"><a class="increase" href="javascript:void(0)"><i>+</i></a></div>'
              , i = (t.append(e),
            t.find(".hui-input-text"))
              , s = t.find(".decrease")
              , n = t.find(".increase")
              , e = parseInt(i.val());
            e <= o.minValue && (s.addClass("disabled"),
            n.removeClass("disabled")),
            e >= o.maxValue && (s.removeClass("disabled"),
            n.addClass("disabled")),
            i.on("blur", function() {
                var t = h(this).val();
                "" != (t = (t = t.replace(/[^\d]/g, "")).replace(/\b(0+)/gi, "")) ? t > o.minValue && t < o.maxValue ? (i.val(t),
                n.removeClass("disabled"),
                s.removeClass("disabled")) : t <= o.minValue ? (i.val(o.minValue),
                s.addClass("disabled"),
                n.removeClass("disabled")) : (i.val(o.maxValue),
                s.removeClass("disabled"),
                n.addClass("disabled")) : (h(this).val(o.minValue),
                s.addClass("disabled"),
                n.removeClass("disabled")),
                a && a(i.val())
            }),
            i.on("keydown", function(t) {
                t = t || window.event;
                t.keyCode === r && (s.trigger("click"),
                t.returnValue = !1),
                t.keyCode === l && (n.trigger("click"),
                t.returnValue = !1)
            }),
            s.on("click", function() {
                var t = parseInt(i.val());
                i.val(t <= o.minValue ? o.minValue : t - o.dis),
                n.removeClass("disabled"),
                i.val() <= o.minValue && (i.val(o.minValue),
                s.addClass("disabled")),
                a && a(i.val())
            }),
            n.on("click", function() {
                var t = parseInt(i.val());
                i.val(t >= o.maxValue ? o.maxValue : t + o.dis),
                s.removeClass("disabled"),
                i.val() >= o.maxValue && (i.val(o.maxValue),
                n.addClass("disabled")),
                a && a(i.val())
            })
        })
    }
}(window.jQuery),
function(e) {
    e.Huiloading = {
        show: function(t) {
            0 < e(".loading-wrapper").length && e(".loading-wrapper").remove();
            t = '<div class="loading-wrapper"><div class="loading-content"><i class="iconpic iconpic-loading"></i> <span>' + (t = null == t ? "" : t) + "</span></div></div>",
            e(document.body).append(t),
            t = e(".loading-wrapper .loading-content").width() + 40;
            e(".loading-wrapper .loading-content").css({
                "margin-left": -t / 2 + "px"
            })
        },
        hide: function() {
            e(".loading-wrapper").remove()
        }
    }
}(window.jQuery),
function(a) {
    a.fn.HuicheckAll = function(e, o) {
        e = a.extend({
            checkboxAll: 'thead input[type="checkbox"]',
            checkbox: 'tbody input[type="checkbox"]'
        }, e);
        this.each(function() {
            var t = a(this)
              , s = t.find(e.checkboxAll)
              , n = t.find(e.checkbox);
            s.on("click", function() {
                var t = s.prop("checked")
                  , e = (n.prop("checked", t),
                0)
                  , i = [];
                n.each(function() {
                    a(this).prop("checked") && (i.push(a(this).val()),
                    e++)
                }),
                o && o({
                    Number: e,
                    checkedArr: i
                })
            }),
            n.on("click", function() {
                n.length == n.prop("checked").length ? s.prop("checked", !0) : s.prop("checked", !1);
                var t = 0
                  , e = [];
                n.each(function() {
                    a(this).prop("checked") && (e.push(a(this).val()),
                    t++)
                }),
                o && o({
                    Number: t,
                    checkedArr: e
                })
            })
        })
    }
}(window.jQuery),
function(e) {
    e.fn.HuitogglePassword = function(t) {
        t = e.extend({}, t);
        this.each(function() {
            var t = e(this);
            t.on("focus", function() {
                t.attr("type", "text")
            }),
            t.on("blur", function() {
                t.attr("type", "password")
            })
        })
    }
}(window.jQuery),
function(i) {
    i.Huimodaltips = function(t, e) {
        t = '<div id="hui-modal-tips" class="hui-modal hide hui-modal-tips"><div class="hui-modal-dialog" style="width:' + ("auto" == (t = i.extend({}, {
            btn: ["确定"],
            content: "弹窗内容",
            title: "提示",
            icon: "",
            width: 400
        }, t)).width ? "400px" : t.width + "px") + '"><div class="hui-modal-content radius"><div class="hui-modal-header"><div class="hui-modal-title">' + t.title + '</div></div><div class="hui-modal-body"><div class="hui-modal-tips-icon">' + t.icon + '</div><div class="hui-modal-tips-content">' + t.content + '</div><div class="hui-modal-btn-wrapper"><button class="hui-btn hui-btn-success size-M radius">' + t.btn[0] + "</button></div></div></div></div></div>";
        0 < i("#hui-modal-tips").length && i("#hui-modal-tips").remove(),
        i(document.body).append(t),
        i("#hui-modal-tips").modal("show"),
        i("#hui-modal-tips .hui-modal-btn-wrapper .hui-btn").on("click", function() {
            i("#hui-modal-tips").modal("hide"),
            e && e()
        })
    }
}(window.jQuery),
function(o) {
    "use strict";
    function s(t, e) {
        this.$element = o(t),
        this.options = o.extend({}, s.DEFAULTS, e),
        this.isLoading = !1
    }
    function i(i) {
        return this.each(function() {
            var t = o(this)
              , e = t.data("bs.button");
            e || t.data("bs.button", e = new s(this,"object" == typeof i && i)),
            "toggle" == i ? e.toggle() : i && e.setState(i)
        })
    }
    s.VERSION = "3.3.0",
    s.DEFAULTS = {
        loadingText: "loading..."
    },
    s.prototype.setState = function(t) {
        var e = "disabled"
          , i = this.$element
          , s = i.is("input") ? "val" : "html"
          , n = i.data();
        t += "Text",
        null == n.resetText && i.data("resetText", i[s]()),
        setTimeout(o.proxy(function() {
            i[s]((null == n[t] ? this.options : n)[t]),
            "loadingText" == t ? (this.isLoading = !0,
            i.addClass(e).attr(e, e)) : this.isLoading && (this.isLoading = !1,
            i.removeClass(e).removeAttr(e))
        }, this), 0)
    }
    ,
    s.prototype.toggle = function() {
        var t, e = !0, i = this.$element.closest('[data-toggle="buttons"]');
        i.length ? ("radio" == (t = this.$element.find("input")).prop("type") && (t.prop("checked") && this.$element.hasClass("active") ? e = !1 : i.find(".active").removeClass("active")),
        e && t.prop("checked", !this.$element.hasClass("active")).trigger("change")) : this.$element.attr("aria-pressed", !this.$element.hasClass("active")),
        e && this.$element.toggleClass("active")
    }
    ;
    var t = o.fn.button;
    o.fn.button = i,
    o.fn.button.Constructor = s,
    o.fn.button.noConflict = function() {
        return o.fn.button = t,
        this
    }
    ,
    o(document).on("click.bs.button.data-api", '[data-toggle^="button"]', function(t) {
        var e = o(t.target);
        e.hasClass("btn"),
        e = e.closest(".hui-btn"),
        i.call(e, "toggle"),
        t.preventDefault()
    }).on("focus.bs.button.data-api blur.bs.button.data-api", '[data-toggle^="button"]', function(t) {
        o(t.target).closest(".hui-btn").toggleClass("focus", "focus" == t.type)
    })
}(jQuery),
function(o) {
    "use strict";
    function a(t, e) {
        this.options = e,
        this.$body = o(document.body),
        this.$element = o(t),
        this.$backdrop = this.isShown = null,
        this.scrollbarWidth = 0,
        this.options.remote && this.$element.find(".hui-modal-content").load(this.options.remote, o.proxy(function() {
            this.$element.trigger("loaded.bs.modal")
        }, this))
    }
    function n(s, n) {
        return this.each(function() {
            var t = o(this)
              , e = t.data("bs.modal")
              , i = o.extend({}, a.DEFAULTS, t.data(), "object" == typeof s && s);
            e || t.data("bs.modal", e = new a(this,i)),
            "string" == typeof s ? e[s](n) : i.show && e.show(n)
        })
    }
    a.VERSION = "3.3.0",
    a.TRANSITION_DURATION = 300,
    a.BACKDROP_TRANSITION_DURATION = 150,
    a.DEFAULTS = {
        backdrop: !0,
        keyboard: !0,
        show: !0
    },
    a.prototype.toggle = function(t) {
        return this.isShown ? this.hide() : this.show(t)
    }
    ,
    a.prototype.show = function(i) {
        var s = this
          , t = o.Event("show.bs.modal", {
            relatedTarget: i
        });
        this.$element.trigger(t),
        this.isShown || t.isDefaultPrevented() || (this.isShown = !0,
        this.checkScrollbar(),
        this.$body.addClass("hui-modal-open"),
        this.setScrollbar(),
        this.escape(),
        this.$element.on("click.dismiss.bs.modal", '[data-dismiss="modal"]', o.proxy(this.hide, this)),
        this.backdrop(function() {
            var t = o.support.transition && s.$element.hasClass("fade")
              , e = (s.$element.parent().length || s.$element.appendTo(s.$body),
            s.$element.show().scrollTop(0),
            t && s.$element[0].offsetWidth,
            s.$element.addClass("in").attr("aria-hidden", !1),
            s.enforceFocus(),
            o.Event("shown.bs.modal", {
                relatedTarget: i
            }));
            t ? s.$element.find(".hui-modal-dialog").one("bsTransitionEnd", function() {
                s.$element.trigger("focus").trigger(e)
            }).emulateTransitionEnd(a.TRANSITION_DURATION) : s.$element.trigger("focus").trigger(e)
        }))
    }
    ,
    a.prototype.hide = function(t) {
        t && t.preventDefault(),
        t = o.Event("hide.bs.modal"),
        this.$element.trigger(t),
        this.isShown && !t.isDefaultPrevented() && (this.isShown = !1,
        this.escape(),
        o(document).off("focusin.bs.modal"),
        this.$element.removeClass("in").attr("aria-hidden", !0).off("click.dismiss.bs.modal"),
        o.support.transition && this.$element.hasClass("fade") ? this.$element.one("bsTransitionEnd", o.proxy(this.hideModal, this)).emulateTransitionEnd(a.TRANSITION_DURATION) : this.hideModal())
    }
    ,
    a.prototype.enforceFocus = function() {
        o(document).off("focusin.bs.modal").on("focusin.bs.modal", o.proxy(function(t) {
            this.$element[0] === t.target || this.$element.has(t.target).length || this.$element.trigger("focus")
        }, this))
    }
    ,
    a.prototype.escape = function() {
        this.isShown && this.options.keyboard ? this.$element.on("keydown.dismiss.bs.modal", o.proxy(function(t) {
            27 == t.which && this.hide()
        }, this)) : this.isShown || this.$element.off("keydown.dismiss.bs.modal")
    }
    ,
    a.prototype.hideModal = function() {
        var t = this;
        this.$element.hide(),
        this.backdrop(function() {
            t.$body.removeClass("hui-modal-open"),
            t.resetScrollbar(),
            t.$element.trigger("hidden.bs.modal")
        })
    }
    ,
    a.prototype.removeBackdrop = function() {
        this.$backdrop && this.$backdrop.remove(),
        this.$backdrop = null
    }
    ,
    a.prototype.backdrop = function(t) {
        var e, i = this, s = this.$element.hasClass("fade") ? "fade" : "";
        this.isShown && this.options.backdrop ? (e = o.support.transition && s,
        this.$backdrop = o('<div class="hui-modal-backdrop ' + s + '" />').prependTo(this.$element).on("click.dismiss.bs.modal", o.proxy(function(t) {
            if (t.target !== t.currentTarget)
                return "static" == this.options.backdrop ? this.$element[0].focus.call(this.$element[0]) : this.hide.call(this)
        }, this)),
        e && this.$backdrop[0].offsetWidth,
        this.$backdrop.addClass("in"),
        t && (e ? this.$backdrop.one("bsTransitionEnd", t).emulateTransitionEnd(a.BACKDROP_TRANSITION_DURATION) : t())) : !this.isShown && this.$backdrop ? (this.$backdrop.removeClass("in"),
        s = function() {
            i.removeBackdrop(),
            t && t()
        }
        ,
        o.support.transition && this.$element.hasClass("fade") ? this.$backdrop.one("bsTransitionEnd", s).emulateTransitionEnd(a.BACKDROP_TRANSITION_DURATION) : s()) : t && t()
    }
    ,
    a.prototype.checkScrollbar = function() {
        this.scrollbarWidth = this.measureScrollbar()
    }
    ,
    a.prototype.setScrollbar = function() {
        var t = parseInt(this.$body.css("padding-right") || 0, 10);
        this.scrollbarWidth && this.$body.css("padding-right", t + this.scrollbarWidth)
    }
    ,
    a.prototype.resetScrollbar = function() {
        this.$body.css("padding-right", "")
    }
    ,
    a.prototype.measureScrollbar = function() {
        if (document.body.clientWidth >= window.innerWidth)
            return 0;
        var t = document.createElement("div")
          , e = (t.className = "hui-modal-scrollbar-measure",
        this.$body.append(t),
        t.offsetWidth - t.clientWidth);
        return this.$body[0].removeChild(t),
        e
    }
    ;
    var t = o.fn.modal;
    o.fn.modal = n,
    o.fn.modal.Constructor = a,
    o.fn.modal.noConflict = function() {
        return o.fn.modal = t,
        this
    }
    ,
    o(document).on("click.bs.modal.data-api", '[data-toggle="modal"]', function(t) {
        var e = o(this)
          , i = e.attr("href")
          , s = o(e.attr("data-target") || i && i.replace(/.*(?=#[^\s]+$)/, ""))
          , i = s.data("bs.modal") ? "toggle" : o.extend({
            remote: !/#/.test(i) && i
        }, s.data(), e.data());
        e.is("a") && t.preventDefault(),
        s.one("show.bs.modal", function(t) {
            t.isDefaultPrevented() || s.one("hidden.bs.modal", function() {
                e.is(":visible") && e.trigger("focus")
            })
        }),
        n.call(s, i, this)
    })
}(window.jQuery),
function(n) {
    "use strict";
    function s(t) {
        n(t).on("click.bs.dropdown", this.toggle)
    }
    var o = '[data-toggle="dropdown"]';
    function a(t) {
        var e = t.attr("data-target")
          , e = (e = e || (e = t.attr("href")) && /#[A-Za-z]/.test(e) && e.replace(/.*(?=#[^\s]*$)/, "")) && n(e);
        return e && e.length ? e : t.parent()
    }
    function r(s) {
        if (s && 3 === s.which)
            return n(".hui-dropdown-backdrop").remove();
        n(o).each(function() {
            var t = n(this)
              , e = a(t)
              , i = {
                relatedTarget: this
            };
            if (e.hasClass("open"))
                return s && "click" == s.type && /input|textarea/i.test(s.target.tagName) && n.contains(e[0], s.target) ? e.trigger(s = n.Event("hide.bs.dropdown", i)) : void (s.isDefaultPrevented() || (t.attr("aria-expanded", "false"),
                e.removeClass("open").trigger("hidden.bs.dropdown", i)))
        })
    }
    s.VERSION = "3.3.5",
    s.prototype.toggle = function(t) {
        var e = n(this);
        if (!e.is(".disabled, :disabled")) {
            var i = a(e)
              , s = i.hasClass("open");
            if (r(),
            !s) {
                "ontouchstart"in document.documentElement && !i.closest(".hui-navbar-nav").length && n(document.createElement("div")).addClass("hui-dropdown-backdrop").insertAfter(n(this)).on("click", r);
                s = {
                    relatedTarget: this
                };
                if (i.trigger(t = n.Event("show.bs.dropdown", s)),
                t.isDefaultPrevented())
                    return e.trigger("focus").attr("aria-expanded", "true");
                i.toggleClass("open").trigger("shown.bs.dropdown", s)
            }
            return !1
        }
    }
    ,
    s.prototype.keydown = function(t) {
        var e, i;
        /(38|40|27|32)/.test(t.which) && !/input|textarea/i.test(t.target.tagName) && (i = n(this),
        t.preventDefault(),
        t.stopPropagation(),
        i.is(".disabled, :disabled") || (!(e = (i = a(i)).hasClass("open")) && 27 != t.which || e && 27 == t.which ? 27 == t.which && i.find(o).trigger("focus") : (e = i.find(".hui-dropdown-menu li:not(.disabled):visible a")).length && (i = e.index(t.target),
        38 == t.which && 0 < i && i--,
        40 == t.which && i < e.length - 1 && i++,
        e.eq(i = ~i ? i : 0).trigger("focus"))))
    }
    ;
    var t = n.fn.dropdown;
    n.fn.dropdown = function(i) {
        return this.each(function() {
            var t = n(this)
              , e = t.data("bs.dropdown");
            e || t.data("bs.dropdown", e = new s(this)),
            "string" == typeof i && e[i].call(t)
        })
    }
    ,
    n.fn.dropdown.Constructor = s,
    n.fn.dropdown.noConflict = function() {
        return n.fn.dropdown = t,
        this
    }
    ,
    n(document).on("click.bs.dropdown.data-api", r).on("click.bs.dropdown.data-api", ".hui-dropdown form", function(t) {
        t.stopPropagation()
    }).on("click.bs.dropdown.data-api", o, s.prototype.toggle).on("keydown.bs.dropdown.data-api", o, s.prototype.keydown).on("keydown.bs.dropdown.data-api", ".hui-dropdown-menu", s.prototype.keydown)
}(window.jQuery),
$(function() {
    $(document).on("mouseenter", ".hui-dropdown", function() {
        $(this).addClass("hover")
    }),
    $(document).on("mouseleave", ".hui-dropdown", function() {
        $(this).removeClass("hover")
    }),
    $(document).on("mouseenter", ".hui-dropdown-hover", function() {
        $(this).addClass("open")
    }),
    $(document).on("mouseleave", ".hui-dropdown-hover", function() {
        $(this).removeClass("open")
    }),
    $(document).on("click", ".hui-dropdown-menu .hui-menu-item a", function() {
        $(".hui-dropdown").removeClass("open")
    }),
    $(document).on("mouseenter", ".hui-menu > .hui-menu-item", function() {
        $(this).addClass("open")
    }),
    $(document).on("mouseleave", ".hui-menu > .hui-menu-item", function() {
        $(this).removeClass("open")
    })
}),
function(s) {
    "use strict";
    s.fn.emulateTransitionEnd = function(t) {
        var e = !1
          , i = this;
        s(this).one("bsTransitionEnd", function() {
            e = !0
        });
        return setTimeout(function() {
            e || s(i).trigger(s.support.transition.end)
        }, t),
        this
    }
    ,
    s(function() {
        s.support.transition = function() {
            var t, e = document.createElement("bootstrap"), i = {
                WebkitTransition: "webkitTransitionEnd",
                MozTransition: "transitionend",
                OTransition: "oTransitionEnd otransitionend",
                transition: "transitionend"
            };
            for (t in i)
                if (void 0 !== e.style[t])
                    return {
                        end: i[t]
                    };
            return !1
        }(),
        s.support.transition && (s.event.special.bsTransitionEnd = {
            bindType: s.support.transition.end,
            delegateType: s.support.transition.end,
            handle: function(t) {
                if (s(t.target).is(this))
                    return t.handleObj.handler.apply(this, arguments)
            }
        })
    })
}(window.jQuery),
function(l) {
    "use strict";
    function h(t, e) {
        this.type = this.options = this.enabled = this.timeout = this.hoverState = this.$element = null,
        this.init("tooltip", t, e)
    }
    h.VERSION = "3.3.0",
    h.TRANSITION_DURATION = 150,
    h.DEFAULTS = {
        animation: !0,
        placement: "top",
        selector: !1,
        template: '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',
        trigger: "hover focus",
        title: "",
        delay: 0,
        html: !1,
        container: !1,
        viewport: {
            selector: "body",
            padding: 0
        }
    },
    h.prototype.init = function(t, e, i) {
        this.enabled = !0,
        this.type = t,
        this.$element = l(e),
        this.options = this.getOptions(i),
        this.$viewport = this.options.viewport && l(this.options.viewport.selector || this.options.viewport);
        for (var s = this.options.trigger.split(" "), n = s.length; n--; ) {
            var o, a = s[n];
            "click" == a ? this.$element.on("click." + this.type, this.options.selector, l.proxy(this.toggle, this)) : "manual" != a && (o = "hover" == a ? "mouseleave" : "focusout",
            this.$element.on(("hover" == a ? "mouseenter" : "focusin") + "." + this.type, this.options.selector, l.proxy(this.enter, this)),
            this.$element.on(o + "." + this.type, this.options.selector, l.proxy(this.leave, this)))
        }
        this.options.selector ? this._options = l.extend({}, this.options, {
            trigger: "manual",
            selector: ""
        }) : this.fixTitle()
    }
    ,
    h.prototype.getDefaults = function() {
        return h.DEFAULTS
    }
    ,
    h.prototype.getOptions = function(t) {
        return (t = l.extend({}, this.getDefaults(), this.$element.data(), t)).delay && "number" == typeof t.delay && (t.delay = {
            show: t.delay,
            hide: t.delay
        }),
        t
    }
    ,
    h.prototype.getDelegateOptions = function() {
        var i = {}
          , s = this.getDefaults();
        return this._options && l.each(this._options, function(t, e) {
            s[t] != e && (i[t] = e)
        }),
        i
    }
    ,
    h.prototype.enter = function(t) {
        var e = t instanceof this.constructor ? t : l(t.currentTarget).data("bs." + this.type);
        if (e && e.$tip && e.$tip.is(":visible"))
            e.hoverState = "in";
        else {
            if (e || (e = new this.constructor(t.currentTarget,this.getDelegateOptions()),
            l(t.currentTarget).data("bs." + this.type, e)),
            clearTimeout(e.timeout),
            e.hoverState = "in",
            !e.options.delay || !e.options.delay.show)
                return e.show();
            e.timeout = setTimeout(function() {
                "in" == e.hoverState && e.show()
            }, e.options.delay.show)
        }
    }
    ,
    h.prototype.leave = function(t) {
        var e = t instanceof this.constructor ? t : l(t.currentTarget).data("bs." + this.type);
        if (e || (e = new this.constructor(t.currentTarget,this.getDelegateOptions()),
        l(t.currentTarget).data("bs." + this.type, e)),
        clearTimeout(e.timeout),
        e.hoverState = "out",
        !e.options.delay || !e.options.delay.hide)
            return e.hide();
        e.timeout = setTimeout(function() {
            "out" == e.hoverState && e.hide()
        }, e.options.delay.hide)
    }
    ,
    h.prototype.show = function() {
        var e, t, i, s, n, o, a, r = l.Event("show.bs." + this.type);
        this.hasContent() && this.enabled && (this.$element.trigger(r),
        n = l.contains(this.$element[0].ownerDocument.documentElement, this.$element[0]),
        !r.isDefaultPrevented() && n && (r = (e = this).tip(),
        n = this.getUID(this.type),
        this.setContent(),
        r.attr("id", n),
        this.$element.attr("aria-describedby", n),
        this.options.animation && r.addClass("fade"),
        n = "function" == typeof this.options.placement ? this.options.placement.call(this, r[0], this.$element[0]) : this.options.placement,
        (a = (t = /\s?auto?\s?/i).test(n)) && (n = n.replace(t, "") || "top"),
        r.detach().css({
            top: 0,
            left: 0,
            display: "block"
        }).addClass(n).data("bs." + this.type, this),
        this.options.container ? r.appendTo(this.options.container) : r.insertAfter(this.$element),
        t = this.getPosition(),
        i = r[0].offsetWidth,
        s = r[0].offsetHeight,
        a && (a = n,
        o = this.options.container ? l(this.options.container) : this.$element.parent(),
        o = this.getPosition(o),
        n = "bottom" == n && t.bottom + s > o.bottom ? "top" : "top" == n && t.top - s < o.top ? "bottom" : "right" == n && t.right + i > o.width ? "left" : "left" == n && t.left - i < o.left ? "right" : n,
        r.removeClass(a).addClass(n)),
        o = this.getCalculatedOffset(n, t, i, s),
        this.applyPlacement(o, n),
        a = function() {
            var t = e.hoverState;
            e.$element.trigger("shown.bs." + e.type),
            e.hoverState = null,
            "out" == t && e.leave(e)
        }
        ,
        l.support.transition && this.$tip.hasClass("fade") ? r.one("bsTransitionEnd", a).emulateTransitionEnd(h.TRANSITION_DURATION) : a()))
    }
    ,
    h.prototype.applyPlacement = function(t, e) {
        var i = this.tip()
          , s = i[0].offsetWidth
          , n = i[0].offsetHeight
          , o = parseInt(i.css("margin-top"), 10)
          , a = parseInt(i.css("margin-left"), 10)
          , o = (isNaN(o) && (o = 0),
        isNaN(a) && (a = 0),
        t.top = t.top + o,
        t.left = t.left + a,
        l.offset.setOffset(i[0], l.extend({
            using: function(t) {
                i.css({
                    top: Math.round(t.top),
                    left: Math.round(t.left)
                })
            }
        }, t), 0),
        i.addClass("in"),
        i[0].offsetWidth)
          , a = i[0].offsetHeight
          , r = ("top" == e && a != n && (t.top = t.top + n - a),
        this.getViewportAdjustedDelta(e, t, o, a))
          , e = (r.left ? t.left += r.left : t.top += r.top,
        /top|bottom/.test(e))
          , s = e ? 2 * r.left - s + o : 2 * r.top - n + a
          , o = e ? "offsetWidth" : "offsetHeight";
        i.offset(t),
        this.replaceArrow(s, i[0][o], e)
    }
    ,
    h.prototype.replaceArrow = function(t, e, i) {
        this.arrow().css(i ? "left" : "top", 50 * (1 - t / e) + "%").css(i ? "top" : "left", "")
    }
    ,
    h.prototype.setContent = function() {
        var t = this.tip()
          , e = this.getTitle();
        t.find(".tooltip-inner")[this.options.html ? "html" : "text"](e),
        t.removeClass("fade in top bottom left right")
    }
    ,
    h.prototype.hide = function(t) {
        var e = this
          , i = this.tip()
          , s = l.Event("hide.bs." + this.type);
        function n() {
            "in" != e.hoverState && i.detach(),
            e.$element.removeAttr("aria-describedby").trigger("hidden.bs." + e.type),
            t && t()
        }
        if (this.$element.trigger(s),
        !s.isDefaultPrevented())
            return i.removeClass("in"),
            l.support.transition && this.$tip.hasClass("fade") ? i.one("bsTransitionEnd", n).emulateTransitionEnd(h.TRANSITION_DURATION) : n(),
            this.hoverState = null,
            this
    }
    ,
    h.prototype.fixTitle = function() {
        var t = this.$element;
        !t.attr("title") && "string" == typeof t.attr("data-original-title") || t.attr("data-original-title", t.attr("title") || "").attr("title", "")
    }
    ,
    h.prototype.hasContent = function() {
        return this.getTitle()
    }
    ,
    h.prototype.getPosition = function(t) {
        var e = (t = t || this.$element)[0]
          , i = "BODY" == e.tagName
          , e = e.getBoundingClientRect()
          , s = (null == e.width && (e = l.extend({}, e, {
            width: e.right - e.left,
            height: e.bottom - e.top
        })),
        i ? {
            top: 0,
            left: 0
        } : t.offset())
          , t = {
            scroll: i ? document.documentElement.scrollTop || document.body.scrollTop : t.scrollTop()
        }
          , i = i ? {
            width: l(window).width(),
            height: l(window).height()
        } : null;
        return l.extend({}, e, t, i, s)
    }
    ,
    h.prototype.getCalculatedOffset = function(t, e, i, s) {
        return "bottom" == t ? {
            top: e.top + e.height,
            left: e.left + e.width / 2 - i / 2
        } : "top" == t ? {
            top: e.top - s,
            left: e.left + e.width / 2 - i / 2
        } : "left" == t ? {
            top: e.top + e.height / 2 - s / 2,
            left: e.left - i
        } : {
            top: e.top + e.height / 2 - s / 2,
            left: e.left + e.width
        }
    }
    ,
    h.prototype.getViewportAdjustedDelta = function(t, e, i, s) {
        var n = {
            top: 0,
            left: 0
        };
        if (!this.$viewport)
            return n;
        var o = this.options.viewport && this.options.viewport.padding || 0
          , a = this.getPosition(this.$viewport);
        return /right|left/.test(t) ? (t = e.top - o - a.scroll,
        s = e.top + o - a.scroll + s,
        t < a.top ? n.top = a.top - t : s > a.top + a.height && (n.top = a.top + a.height - s)) : (t = e.left - o,
        s = e.left + o + i,
        t < a.left ? n.left = a.left - t : s > a.width && (n.left = a.left + a.width - s)),
        n
    }
    ,
    h.prototype.getTitle = function() {
        var t = this.$element
          , e = this.options;
        return t.attr("data-original-title") || ("function" == typeof e.title ? e.title.call(t[0]) : e.title)
    }
    ,
    h.prototype.getUID = function(t) {
        for (; t += ~~(1e6 * Math.random()),
        document.getElementById(t); )
            ;
        return t
    }
    ,
    h.prototype.tip = function() {
        return this.$tip = this.$tip || l(this.options.template)
    }
    ,
    h.prototype.arrow = function() {
        return this.$arrow = this.$arrow || this.tip().find(".tooltip-arrow")
    }
    ,
    h.prototype.enable = function() {
        this.enabled = !0
    }
    ,
    h.prototype.disable = function() {
        this.enabled = !1
    }
    ,
    h.prototype.toggleEnabled = function() {
        this.enabled = !this.enabled
    }
    ,
    h.prototype.toggle = function(t) {
        var e = this;
        t && !(e = l(t.currentTarget).data("bs." + this.type)) && (e = new this.constructor(t.currentTarget,this.getDelegateOptions()),
        l(t.currentTarget).data("bs." + this.type, e)),
        e.tip().hasClass("in") ? e.leave(e) : e.enter(e)
    }
    ,
    h.prototype.destroy = function() {
        var t = this;
        clearTimeout(this.timeout),
        this.hide(function() {
            t.$element.off("." + t.type).removeData("bs." + t.type)
        })
    }
    ;
    var t = l.fn.tooltip;
    l.fn.tooltip = function(n) {
        return this.each(function() {
            var t = l(this)
              , e = t.data("bs.tooltip")
              , i = "object" == typeof n && n
              , s = i && i.selector;
            !e && "destroy" == n || (s ? (e || t.data("bs.tooltip", e = {}),
            e[s] || (e[s] = new h(this,i))) : e || t.data("bs.tooltip", e = new h(this,i)),
            "string" == typeof n && e[n]())
        })
    }
    ,
    l.fn.tooltip.Constructor = h,
    l.fn.tooltip.noConflict = function() {
        return l.fn.tooltip = t,
        this
    }
}(window.jQuery),
$(function() {
    $("[data-toggle='tooltip']").tooltip()
}),
function(o) {
    "use strict";
    function a(t, e) {
        this.init("popover", t, e)
    }
    if (!o.fn.tooltip)
        throw new Error("Popover requires tooltip.js");
    a.VERSION = "3.3.0",
    a.DEFAULTS = o.extend({}, o.fn.tooltip.Constructor.DEFAULTS, {
        placement: "right",
        trigger: "click",
        content: "",
        template: '<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
    }),
    ((a.prototype = o.extend({}, o.fn.tooltip.Constructor.prototype)).constructor = a).prototype.getDefaults = function() {
        return a.DEFAULTS
    }
    ,
    a.prototype.setContent = function() {
        var t = this.tip()
          , e = this.getTitle()
          , i = this.getContent();
        t.find(".popover-title")[this.options.html ? "html" : "text"](e),
        t.find(".popover-content").children().detach().end()[this.options.html ? "string" == typeof i ? "html" : "append" : "text"](i),
        t.removeClass("fade top bottom left right in"),
        t.find(".popover-title").html() || t.find(".popover-title").hide()
    }
    ,
    a.prototype.hasContent = function() {
        return this.getTitle() || this.getContent()
    }
    ,
    a.prototype.getContent = function() {
        var t = this.$element
          , e = this.options;
        return t.attr("data-content") || ("function" == typeof e.content ? e.content.call(t[0]) : e.content)
    }
    ,
    a.prototype.arrow = function() {
        return this.$arrow = this.$arrow || this.tip().find(".arrow")
    }
    ,
    a.prototype.tip = function() {
        return this.$tip || (this.$tip = o(this.options.template)),
        this.$tip
    }
    ;
    var t = o.fn.popover;
    o.fn.popover = function(n) {
        return this.each(function() {
            var t = o(this)
              , e = t.data("bs.popover")
              , i = "object" == typeof n && n
              , s = i && i.selector;
            !e && "destroy" == n || (s ? (e || t.data("bs.popover", e = {}),
            e[s] || (e[s] = new a(this,i))) : e || t.data("bs.popover", e = new a(this,i)),
            "string" == typeof n && e[n]())
        })
    }
    ,
    o.fn.popover.Constructor = a,
    o.fn.popover.noConflict = function() {
        return o.fn.popover = t,
        this
    }
}(window.jQuery),
$(function() {
    $("[data-toggle='popover']").popover()
}),
function(t, e) {
    if ("function" == typeof define && define.amd)
        define(["jquery"], e);
    else if ("object" == typeof module && module.exports) {
        var i;
        try {
            i = require("jquery")
        } catch (t) {
            i = null
        }
        module.exports = e(i)
    } else
        t.Slider = e(t.jQuery)
}(this, function(e) {
    var n;
    return function() {
        "use strict";
        var h, d, c = Array.prototype.slice;
        function t() {}
        (h = e) && (d = "undefined" == typeof console ? t : function(t) {
            console.error(t)
        }
        ,
        h.bridget = function(t, e) {
            var i, r, l;
            (i = e).prototype.option || (i.prototype.option = function(t) {
                h.isPlainObject(t) && (this.options = h.extend(!0, this.options, t))
            }
            ),
            r = t,
            l = e,
            h.fn[r] = function(e) {
                var t;
                if ("string" != typeof e)
                    return !(t = this.map(function() {
                        var t = h.data(this, r);
                        return t ? (t.option(e),
                        t._init()) : (t = new l(this,e),
                        h.data(this, r, t)),
                        h(this)
                    })) || 1 < t.length ? t : t[0];
                for (var i = c.call(arguments, 1), s = 0, n = this.length; s < n; s++) {
                    var o = this[s]
                      , o = h.data(o, r);
                    if (o)
                        if (h.isFunction(o[e]) && "_" !== e.charAt(0)) {
                            var a = o[e].apply(o, i);
                            if (void 0 !== a && a !== o)
                                return a
                        } else
                            d("no such method '" + e + "' for " + r + " instance");
                    else
                        d("cannot call methods on " + r + " prior to initialization; attempted to call '" + e + "'")
                }
                return this
            }
        }
        ,
        h.bridget)
    }(),
    function(v) {
        var t, s = function(t) {
            return "Invalid input value '" + t + "' passed in"
        };
        function i(t, e) {
            "string" == typeof t ? this.element = document.querySelector(t) : t instanceof HTMLElement && (this.element = t);
            for (var i, s, n, o, a, r, l, h, t = this.element.style.width, d = !1, c = this.element.parentNode, u = (this.sliderElem ? d = !0 : (this.sliderElem = document.createElement("div"),
            this.sliderElem.className = "slider",
            (o = document.createElement("div")).className = "slider-track",
            (i = document.createElement("div")).className = "slider-selection",
            (s = document.createElement("div")).className = "slider-handle min-slider-handle",
            (n = document.createElement("div")).className = "slider-handle max-slider-handle",
            o.appendChild(i),
            o.appendChild(s),
            o.appendChild(n),
            a = function(t) {
                var e = document.createElement("div")
                  , i = (e.className = "tooltip-arrow",
                document.createElement("div"));
                i.className = "tooltip-inner",
                t.appendChild(e),
                t.appendChild(i)
            }
            ,
            (r = document.createElement("div")).className = "tooltip tooltip-main",
            a(r),
            (l = document.createElement("div")).className = "tooltip tooltip-min",
            a(l),
            (h = document.createElement("div")).className = "tooltip tooltip-max",
            a(h),
            this.sliderElem.appendChild(o),
            this.sliderElem.appendChild(r),
            this.sliderElem.appendChild(l),
            this.sliderElem.appendChild(h),
            c.insertBefore(this.sliderElem, this.element),
            this.element.style.display = "none"),
            v && (this.$element = v(this.element),
            this.$sliderElem = v(this.sliderElem)),
            e = e || {},
            Object.keys(this.defaultOptions)), p = 0; p < u.length; p++) {
                var f = u[p]
                  , m = e[f];
                m = null !== (m = void 0 !== m ? m : function(e, t) {
                    t = "data-slider-" + t,
                    e = e.getAttribute(t);
                    try {
                        return JSON.parse(e)
                    } catch (t) {
                        return e
                    }
                }(this.element, f)) ? m : this.defaultOptions[f],
                this.options || (this.options = {}),
                this.options[f] = m
            }
            this.eventToCallbackMap = {},
            this.sliderElem.id = this.options.id,
            this.touchCapable = "ontouchstart"in window || window.DocumentTouch && document instanceof window.DocumentTouch,
            this.tooltip = this.sliderElem.querySelector(".tooltip-main"),
            this.tooltipInner = this.tooltip.querySelector(".tooltip-inner"),
            this.tooltip_min = this.sliderElem.querySelector(".tooltip-min"),
            this.tooltipInner_min = this.tooltip_min.querySelector(".tooltip-inner"),
            this.tooltip_max = this.sliderElem.querySelector(".tooltip-max"),
            this.tooltipInner_max = this.tooltip_max.querySelector(".tooltip-inner"),
            !0 === d && (this._removeClass(this.sliderElem, "slider-horizontal"),
            this._removeClass(this.sliderElem, "slider-vertical"),
            this._removeClass(this.tooltip, "hide"),
            this._removeClass(this.tooltip_min, "hide"),
            this._removeClass(this.tooltip_max, "hide"),
            ["left", "top", "width", "height"].forEach(function(t) {
                this._removeProperty(this.trackSelection, t)
            }, this),
            [this.handle1, this.handle2].forEach(function(t) {
                this._removeProperty(t, "left"),
                this._removeProperty(t, "top")
            }, this),
            [this.tooltip, this.tooltip_min, this.tooltip_max].forEach(function(t) {
                this._removeProperty(t, "left"),
                this._removeProperty(t, "top"),
                this._removeProperty(t, "margin-left"),
                this._removeProperty(t, "margin-top"),
                this._removeClass(t, "right"),
                this._removeClass(t, "top")
            }, this)),
            "vertical" === this.options.orientation ? (this._addClass(this.sliderElem, "slider-vertical"),
            this.stylePos = "top",
            this.mousePos = "pageY",
            this.sizePos = "offsetHeight",
            this._addClass(this.tooltip, "right"),
            this.tooltip.style.left = "100%",
            this._addClass(this.tooltip_min, "right"),
            this.tooltip_min.style.left = "100%",
            this._addClass(this.tooltip_max, "right"),
            this.tooltip_max.style.left = "100%") : (this._addClass(this.sliderElem, "slider-horizontal"),
            this.sliderElem.style.width = t,
            this.options.orientation = "horizontal",
            this.stylePos = "left",
            this.mousePos = "pageX",
            this.sizePos = "offsetWidth",
            this._addClass(this.tooltip, "top"),
            this.tooltip.style.top = -this.tooltip.outerHeight - 14 + "px",
            this._addClass(this.tooltip_min, "top"),
            this.tooltip_min.style.top = -this.tooltip_min.outerHeight - 14 + "px",
            this._addClass(this.tooltip_max, "top"),
            this.tooltip_max.style.top = -this.tooltip_max.outerHeight - 14 + "px"),
            this.options.value instanceof Array ? this.options.range = !0 : this.options.range && (this.options.value = [this.options.value, this.options.max]),
            this.trackSelection = i || this.trackSelection,
            "none" === this.options.selection && this._addClass(this.trackSelection, "hide"),
            this.handle1 = s || this.handle1,
            this.handle2 = n || this.handle2,
            !0 === d && (this._removeClass(this.handle1, "round triangle"),
            this._removeClass(this.handle2, "round triangle hide"));
            -1 !== ["round", "triangle", "custom"].indexOf(this.options.handle) && (this._addClass(this.handle1, this.options.handle),
            this._addClass(this.handle2, this.options.handle)),
            this.offset = this._offset(this.sliderElem),
            this.size = this.sliderElem[this.sizePos],
            this.setValue(this.options.value),
            this.handle1Keydown = this._keydown.bind(this, 0),
            this.handle1.addEventListener("keydown", this.handle1Keydown, !1),
            this.handle2Keydown = this._keydown.bind(this, 1),
            this.handle2.addEventListener("keydown", this.handle2Keydown, !1),
            this.touchCapable ? (this.mousedown = this._mousedown.bind(this),
            this.sliderElem.addEventListener("touchstart", this.mousedown, !1)) : (this.mousedown = this._mousedown.bind(this),
            this.sliderElem.addEventListener("mousedown", this.mousedown, !1)),
            "hide" === this.options.tooltip ? (this._addClass(this.tooltip, "hide"),
            this._addClass(this.tooltip_min, "hide"),
            this._addClass(this.tooltip_max, "hide")) : "always" === this.options.tooltip ? (this._showTooltip(),
            this._alwaysShowTooltip = !0) : (this.showTooltip = this._showTooltip.bind(this),
            this.hideTooltip = this._hideTooltip.bind(this),
            this.sliderElem.addEventListener("mouseenter", this.showTooltip, !1),
            this.sliderElem.addEventListener("mouseleave", this.hideTooltip, !1),
            this.handle1.addEventListener("focus", this.showTooltip, !1),
            this.handle1.addEventListener("blur", this.hideTooltip, !1),
            this.handle2.addEventListener("focus", this.showTooltip, !1),
            this.handle2.addEventListener("blur", this.hideTooltip, !1)),
            this.options.enabled ? this.enable() : this.disable()
        }
        (n = function(t, e) {
            return i.call(this, t, e),
            this
        }
        ).prototype = {
            _init: function() {},
            constructor: n,
            defaultOptions: {
                id: "",
                min: 0,
                max: 10,
                step: 1,
                precision: 0,
                orientation: "horizontal",
                value: 5,
                range: !1,
                selection: "before",
                tooltip: "show",
                tooltip_split: !1,
                handle: "round",
                reversed: !1,
                enabled: !0,
                formatter: function(t) {
                    return t instanceof Array ? t[0] + " : " + t[1] : t
                },
                natural_arrow_keys: !1
            },
            over: !1,
            inDrag: !1,
            getValue: function() {
                return this.options.range ? this.options.value : this.options.value[0]
            },
            setValue: function(t, e) {
                t = t || 0;
                var i = this.getValue()
                  , t = (this.options.value = this._validateInputValue(t),
                this._applyPrecision.bind(this))
                  , t = (this.options.range ? (this.options.value[0] = t(this.options.value[0]),
                this.options.value[1] = t(this.options.value[1]),
                this.options.value[0] = Math.max(this.options.min, Math.min(this.options.max, this.options.value[0])),
                this.options.value[1] = Math.max(this.options.min, Math.min(this.options.max, this.options.value[1]))) : (this.options.value = t(this.options.value),
                this.options.value = [Math.max(this.options.min, Math.min(this.options.max, this.options.value))],
                this._addClass(this.handle2, "hide"),
                "after" === this.options.selection ? this.options.value[1] = this.options.max : this.options.value[1] = this.options.min),
                this.diff = this.options.max - this.options.min,
                0 < this.diff ? this.percentage = [100 * (this.options.value[0] - this.options.min) / this.diff, 100 * (this.options.value[1] - this.options.min) / this.diff, 100 * this.options.step / this.diff] : this.percentage = [0, 0, 100],
                this._layout(),
                this.options.range ? this.options.value : this.options.value[0]);
                return !0 === e && this._trigger("slide", t),
                i !== t && this._trigger("change", {
                    oldValue: i,
                    newValue: t
                }),
                this._setDataVal(t),
                this
            },
            destroy: function() {
                this._removeSliderEventHandlers(),
                this.sliderElem.parentNode.removeChild(this.sliderElem),
                this.element.style.display = "",
                this._cleanUpEventCallbacksMap(),
                this.element.removeAttribute("data"),
                v && (this._unbindJQueryEventHandlers(),
                this.$element.removeData("slider"))
            },
            disable: function() {
                return this.options.enabled = !1,
                this.handle1.removeAttribute("tabindex"),
                this.handle2.removeAttribute("tabindex"),
                this._addClass(this.sliderElem, "slider-disabled"),
                this._trigger("slideDisabled"),
                this
            },
            enable: function() {
                return this.options.enabled = !0,
                this.handle1.setAttribute("tabindex", 0),
                this.handle2.setAttribute("tabindex", 0),
                this._removeClass(this.sliderElem, "slider-disabled"),
                this._trigger("slideEnabled"),
                this
            },
            toggle: function() {
                return this.options.enabled ? this.disable() : this.enable(),
                this
            },
            isEnabled: function() {
                return this.options.enabled
            },
            on: function(t, e) {
                return v ? (this.$element.on(t, e),
                this.$sliderElem.on(t, e)) : this._bindNonQueryEventHandler(t, e),
                this
            },
            getAttribute: function(t) {
                return t ? this.options[t] : this.options
            },
            setAttribute: function(t, e) {
                return this.options[t] = e,
                this
            },
            refresh: function() {
                return this._removeSliderEventHandlers(),
                i.call(this, this.element, this.options),
                v && v.data(this.element, "slider", this),
                this
            },
            relayout: function() {
                return this._layout(),
                this
            },
            _removeSliderEventHandlers: function() {
                this.handle1.removeEventListener("keydown", this.handle1Keydown, !1),
                this.handle1.removeEventListener("focus", this.showTooltip, !1),
                this.handle1.removeEventListener("blur", this.hideTooltip, !1),
                this.handle2.removeEventListener("keydown", this.handle2Keydown, !1),
                this.handle2.removeEventListener("focus", this.handle2Keydown, !1),
                this.handle2.removeEventListener("blur", this.handle2Keydown, !1),
                this.sliderElem.removeEventListener("mouseenter", this.showTooltip, !1),
                this.sliderElem.removeEventListener("mouseleave", this.hideTooltip, !1),
                this.sliderElem.removeEventListener("touchstart", this.mousedown, !1),
                this.sliderElem.removeEventListener("mousedown", this.mousedown, !1)
            },
            _bindNonQueryEventHandler: function(t, e) {
                void 0 === this.eventToCallbackMap[t] && (this.eventToCallbackMap[t] = []),
                this.eventToCallbackMap[t].push(e)
            },
            _cleanUpEventCallbacksMap: function() {
                for (var t = Object.keys(this.eventToCallbackMap), e = 0; e < t.length; e++) {
                    var i = t[e];
                    this.eventToCallbackMap[i] = null
                }
            },
            _showTooltip: function() {
                !1 === this.options.tooltip_split ? this._addClass(this.tooltip, "in") : (this._addClass(this.tooltip_min, "in"),
                this._addClass(this.tooltip_max, "in")),
                this.over = !0
            },
            _hideTooltip: function() {
                !1 === this.inDrag && !0 !== this.alwaysShowTooltip && (this._removeClass(this.tooltip, "in"),
                this._removeClass(this.tooltip_min, "in"),
                this._removeClass(this.tooltip_max, "in")),
                this.over = !1
            },
            _layout: function() {
                var t, e, i, s = this.options.reversed ? [100 - this.percentage[0], this.percentage[1]] : [this.percentage[0], this.percentage[1]];
                this.handle1.style[this.stylePos] = s[0] + "%",
                this.handle2.style[this.stylePos] = s[1] + "%",
                "vertical" === this.options.orientation ? (this.trackSelection.style.top = Math.min(s[0], s[1]) + "%",
                this.trackSelection.style.height = Math.abs(s[0] - s[1]) + "%") : (this.trackSelection.style.left = Math.min(s[0], s[1]) + "%",
                this.trackSelection.style.width = Math.abs(s[0] - s[1]) + "%",
                e = this.tooltip_min.getBoundingClientRect(),
                i = this.tooltip_max.getBoundingClientRect(),
                e.right > i.left ? (this._removeClass(this.tooltip_max, "top"),
                this._addClass(this.tooltip_max, "bottom"),
                this.tooltip_max.style.top = "18px") : (this._removeClass(this.tooltip_max, "bottom"),
                this._addClass(this.tooltip_max, "top"),
                this.tooltip_max.style.top = this.tooltip_min.style.top)),
                this.options.range ? (t = this.options.formatter(this.options.value),
                this._setText(this.tooltipInner, t),
                this.tooltip.style[this.stylePos] = (s[1] + s[0]) / 2 + "%",
                "vertical" === this.options.orientation ? this._css(this.tooltip, "margin-top", -this.tooltip.offsetHeight / 2 + "px") : this._css(this.tooltip, "margin-left", -this.tooltip.offsetWidth / 2 + "px"),
                "vertical" === this.options.orientation ? this._css(this.tooltip, "margin-top", -this.tooltip.offsetHeight / 2 + "px") : this._css(this.tooltip, "margin-left", -this.tooltip.offsetWidth / 2 + "px"),
                e = this.options.formatter(this.options.value[0]),
                this._setText(this.tooltipInner_min, e),
                i = this.options.formatter(this.options.value[1]),
                this._setText(this.tooltipInner_max, i),
                this.tooltip_min.style[this.stylePos] = s[0] + "%",
                "vertical" === this.options.orientation ? this._css(this.tooltip_min, "margin-top", -this.tooltip_min.offsetHeight / 2 + "px") : this._css(this.tooltip_min, "margin-left", -this.tooltip_min.offsetWidth / 2 + "px"),
                this.tooltip_max.style[this.stylePos] = s[1] + "%",
                "vertical" === this.options.orientation ? this._css(this.tooltip_max, "margin-top", -this.tooltip_max.offsetHeight / 2 + "px") : this._css(this.tooltip_max, "margin-left", -this.tooltip_max.offsetWidth / 2 + "px")) : (t = this.options.formatter(this.options.value[0]),
                this._setText(this.tooltipInner, t),
                this.tooltip.style[this.stylePos] = s[0] + "%",
                "vertical" === this.options.orientation ? this._css(this.tooltip, "margin-top", -this.tooltip.offsetHeight / 2 + "px") : this._css(this.tooltip, "margin-left", -this.tooltip.offsetWidth / 2 + "px"))
            },
            _removeProperty: function(t, e) {
                t.style.removeProperty ? t.style.removeProperty(e) : t.style.removeAttribute(e)
            },
            _mousedown: function(t) {
                if (!this.options.enabled)
                    return !1;
                this._triggerFocusOnHandle(),
                this.offset = this._offset(this.sliderElem),
                this.size = this.sliderElem[this.sizePos];
                var e, i = this._getPercentage(t), s = (this.options.range ? (s = Math.abs(this.percentage[0] - i),
                e = Math.abs(this.percentage[1] - i),
                this.dragged = s < e ? 0 : 1) : this.dragged = 0,
                this.percentage[this.dragged] = this.options.reversed ? 100 - i : i,
                this._layout(),
                this.touchCapable && (document.removeEventListener("touchmove", this.mousemove, !1),
                document.removeEventListener("touchend", this.mouseup, !1)),
                this.mousemove && document.removeEventListener("mousemove", this.mousemove, !1),
                this.mouseup && document.removeEventListener("mouseup", this.mouseup, !1),
                this.mousemove = this._mousemove.bind(this),
                this.mouseup = this._mouseup.bind(this),
                this.touchCapable && (document.addEventListener("touchmove", this.mousemove, !1),
                document.addEventListener("touchend", this.mouseup, !1)),
                document.addEventListener("mousemove", this.mousemove, !1),
                document.addEventListener("mouseup", this.mouseup, !1),
                this.inDrag = !0,
                this._calculateValue());
                return this._trigger("slideStart", s),
                this._setDataVal(s),
                this.setValue(s),
                this._pauseEvent(t),
                !0
            },
            _triggerFocusOnHandle: function(t) {
                0 === t && this.handle1.focus(),
                1 === t && this.handle2.focus()
            },
            _keydown: function(t, e) {
                if (!this.options.enabled)
                    return !1;
                var i, s, n;
                switch (e.keyCode) {
                case 37:
                case 40:
                    i = -1;
                    break;
                case 39:
                case 38:
                    i = 1
                }
                if (i)
                    return this.options.natural_arrow_keys && (n = "vertical" === this.options.orientation && !this.options.reversed,
                    s = "horizontal" === this.options.orientation && this.options.reversed,
                    (n || s) && (i *= -1)),
                    n = i * this.percentage[2],
                    s = this.percentage[t] + n,
                    100 < s ? s = 100 : s < 0 && (s = 0),
                    this.dragged = t,
                    this._adjustPercentageForRangeSliders(s),
                    this.percentage[this.dragged] = s,
                    this._layout(),
                    n = this._calculateValue(),
                    this._trigger("slideStart", n),
                    this._setDataVal(n),
                    this.setValue(n, !0),
                    this._trigger("slideStop", n),
                    this._setDataVal(n),
                    this._pauseEvent(e),
                    !1
            },
            _pauseEvent: function(t) {
                t.stopPropagation && t.stopPropagation(),
                t.preventDefault && t.preventDefault(),
                t.cancelBubble = !0,
                t.returnValue = !1
            },
            _mousemove: function(t) {
                if (!this.options.enabled)
                    return !1;
                t = this._getPercentage(t),
                this._adjustPercentageForRangeSliders(t),
                this.percentage[this.dragged] = this.options.reversed ? 100 - t : t,
                this._layout(),
                t = this._calculateValue();
                return this.setValue(t, !0),
                !1
            },
            _adjustPercentageForRangeSliders: function(t) {
                this.options.range && (0 === this.dragged && this.percentage[1] < t ? (this.percentage[0] = this.percentage[1],
                this.dragged = 1) : 1 === this.dragged && this.percentage[0] > t && (this.percentage[1] = this.percentage[0],
                this.dragged = 0))
            },
            _mouseup: function() {
                if (!this.options.enabled)
                    return !1;
                this.touchCapable && (document.removeEventListener("touchmove", this.mousemove, !1),
                document.removeEventListener("touchend", this.mouseup, !1)),
                document.removeEventListener("mousemove", this.mousemove, !1),
                document.removeEventListener("mouseup", this.mouseup, !1),
                (this.inDrag = !1) === this.over && this._hideTooltip();
                var t = this._calculateValue();
                return this._layout(),
                this._trigger("slideStop", t),
                this._setDataVal(t),
                !1
            },
            _calculateValue: function() {
                var t;
                return this.options.range ? (t = [this.options.min, this.options.max],
                0 !== this.percentage[0] && (t[0] = Math.max(this.options.min, this.options.min + Math.round(this.diff * this.percentage[0] / 100 / this.options.step) * this.options.step),
                t[0] = this._applyPrecision(t[0])),
                100 !== this.percentage[1] && (t[1] = Math.min(this.options.max, this.options.min + Math.round(this.diff * this.percentage[1] / 100 / this.options.step) * this.options.step),
                t[1] = this._applyPrecision(t[1]))) : ((t = this.options.min + Math.round(this.diff * this.percentage[0] / 100 / this.options.step) * this.options.step) < this.options.min ? t = this.options.min : t > this.options.max && (t = this.options.max),
                t = parseFloat(t),
                t = this._applyPrecision(t)),
                t
            },
            _applyPrecision: function(t) {
                var e = this.options.precision || this._getNumDigitsAfterDecimalPlace(this.options.step);
                return this._applyToFixedAndParseFloat(t, e)
            },
            _getNumDigitsAfterDecimalPlace: function(t) {
                t = ("" + t).match(/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/);
                return t ? Math.max(0, (t[1] ? t[1].length : 0) - (t[2] ? +t[2] : 0)) : 0
            },
            _applyToFixedAndParseFloat: function(t, e) {
                t = t.toFixed(e);
                return parseFloat(t)
            },
            _getPercentage: function(t) {
                t = 100 * ((t = !this.touchCapable || "touchstart" !== t.type && "touchmove" !== t.type ? t : t.touches[0])[this.mousePos] - this.offset[this.stylePos]) / this.size,
                t = Math.round(t / this.percentage[2]) * this.percentage[2];
                return Math.max(0, Math.min(100, t))
            },
            _validateInputValue: function(t) {
                if ("number" == typeof t)
                    return t;
                if (t instanceof Array)
                    return this._validateArray(t),
                    t;
                throw new Error(s(t))
            },
            _validateArray: function(t) {
                for (var e = 0; e < t.length; e++) {
                    var i = t[e];
                    if ("number" != typeof i)
                        throw new Error(s(i))
                }
            },
            _setDataVal: function(t) {
                this.element.setAttribute("data", "value: '" + t + "'"),
                this.element.setAttribute("value", t)
            },
            _trigger: function(t, e) {
                e = e || 0 === e ? e : void 0;
                var i = this.eventToCallbackMap[t];
                if (i && i.length)
                    for (var s = 0; s < i.length; s++)
                        (0,
                        i[s])(e);
                v && this._triggerJQueryEvent(t, e)
            },
            _triggerJQueryEvent: function(t, e) {
                t = {
                    type: t,
                    value: e
                };
                this.$element.trigger(t),
                this.$sliderElem.trigger(t)
            },
            _unbindJQueryEventHandlers: function() {
                this.$element.off(),
                this.$sliderElem.off()
            },
            _setText: function(t, e) {
                void 0 !== t.innerText ? t.innerText = e : void 0 !== t.textContent && (t.textContent = e)
            },
            _removeClass: function(t, e) {
                for (var i = e.split(" "), s = t.className, n = 0; n < i.length; n++)
                    var o = i[n]
                      , o = new RegExp("(?:\\s|^)" + o + "(?:\\s|$)")
                      , s = s.replace(o, " ");
                t.className = s.trim()
            },
            _addClass: function(t, e) {
                for (var i = e.split(" "), s = t.className, n = 0; n < i.length; n++) {
                    var o = i[n];
                    new RegExp("(?:\\s|^)" + o + "(?:\\s|$)").test(s) || (s += " " + o)
                }
                t.className = s.trim()
            },
            _offset: function(t) {
                var e = 0
                  , i = 0;
                if (t.offsetParent)
                    for (; e += t.offsetLeft,
                    i += t.offsetTop,
                    t = t.offsetParent; )
                        ;
                return {
                    left: e,
                    top: i
                }
            },
            _css: function(t, e, i) {
                v ? v.style(t, e, i) : (e = e.replace(/^-ms-/, "ms-").replace(/-([\da-z])/gi, function(t, e) {
                    return e.toUpperCase()
                }),
                t.style[e] = i)
            }
        },
        v && (t = v.fn.slider ? "bootstrapSlider" : "slider",
        v.bridget(t, n))
    }(e),
    n
}),
function(t) {
    "function" == typeof define && define.amd ? define(["jquery"], t) : "object" == typeof exports ? t(require("jquery")) : t(jQuery)
}(function(k, a) {
    function D() {
        return new Date(Date.UTC.apply(Date, arguments))
    }
    "indexOf"in Array.prototype || (Array.prototype.indexOf = function(t, e) {
        (e = e === a ? 0 : e) < 0 && (e += this.length),
        e < 0 && (e = 0);
        for (var i = this.length; e < i; e++)
            if (e in this && this[e] === t)
                return e;
        return -1
    }
    );
    function y(t, e) {
        for (var i = this, s = (this.element = k(t),
        this.container = e.container || "body",
        this.language = e.language || this.element.data("date-language") || "en",
        this.language = this.language in M ? this.language : this.language.split("-")[0],
        this.language = this.language in M ? this.language : "en",
        this.isRTL = M[this.language].rtl || !1,
        this.formatType = e.formatType || this.element.data("format-type") || "standard",
        this.format = _.parseFormat(e.format || this.element.data("date-format") || M[this.language].format || _.getDefaultFormat(this.formatType, "input"), this.formatType),
        this.isInline = !1,
        this.isVisible = !1,
        this.isInput = this.element.is("input"),
        this.fontAwesome = e.fontAwesome || this.element.data("font-awesome") || !1,
        this.bootcssVer = e.bootcssVer || (this.isInput ? this.element.is(".form-control") ? 3 : 2 : this.bootcssVer = this.element.is(".input-group") ? 3 : 2),
        this.component = !!this.element.is(".date") && (3 == this.bootcssVer ? this.element.find(".input-group-addon .glyphicon-th, .input-group-addon .glyphicon-time, .input-group-addon .glyphicon-remove, .input-group-addon .glyphicon-calendar, .input-group-addon .fa-calendar, .input-group-addon .fa-clock-o") : this.element.find(".add-on .icon-th, .add-on .icon-time, .add-on .icon-calendar, .add-on .fa-calendar, .add-on .fa-clock-o")).parent(),
        this.componentReset = !!this.element.is(".date") && (3 == this.bootcssVer ? this.element.find(".input-group-addon .glyphicon-remove, .input-group-addon .fa-times") : this.element.find(".add-on .icon-remove, .add-on .fa-times")).parent(),
        this.hasInput = this.component && this.element.find("input").length,
        this.component && 0 === this.component.length && (this.component = !1),
        this.linkField = e.linkField || this.element.data("link-field") || !1,
        this.linkFormat = _.parseFormat(e.linkFormat || this.element.data("link-format") || _.getDefaultFormat(this.formatType, "link"), this.formatType),
        this.minuteStep = e.minuteStep || this.element.data("minute-step") || 5,
        this.pickerPosition = e.pickerPosition || this.element.data("picker-position") || "bottom-right",
        this.showMeridian = e.showMeridian || this.element.data("show-meridian") || !1,
        this.initialDate = e.initialDate || new Date,
        this.zIndex = e.zIndex || this.element.data("z-index") || a,
        this.title = void 0 !== e.title && e.title,
        this.defaultTimeZone = (new Date).toString().split("(")[1].slice(0, -1),
        this.timezone = e.timezone || this.defaultTimeZone,
        this.icons = {
            leftArrow: this.fontAwesome ? "fa-arrow-left" : 3 === this.bootcssVer ? "glyphicon-arrow-left" : "icon-arrow-left",
            rightArrow: this.fontAwesome ? "fa-arrow-right" : 3 === this.bootcssVer ? "glyphicon-arrow-right" : "icon-arrow-right"
        },
        this.icontype = this.fontAwesome ? "fa" : "glyphicon",
        this._attachEvents(),
        this.clickedOutside = function(t) {
            0 === k(t.target).closest(".datetimepicker").length && i.hide()
        }
        ,
        this.formatViewType = "datetime",
        "formatViewType"in e ? this.formatViewType = e.formatViewType : "formatViewType"in this.element.data() && (this.formatViewType = this.element.data("formatViewType")),
        this.minView = 0,
        "minView"in e ? this.minView = e.minView : "minView"in this.element.data() && (this.minView = this.element.data("min-view")),
        this.minView = _.convertViewMode(this.minView),
        this.maxView = _.modes.length - 1,
        "maxView"in e ? this.maxView = e.maxView : "maxView"in this.element.data() && (this.maxView = this.element.data("max-view")),
        this.maxView = _.convertViewMode(this.maxView),
        this.wheelViewModeNavigation = !1,
        "wheelViewModeNavigation"in e ? this.wheelViewModeNavigation = e.wheelViewModeNavigation : "wheelViewModeNavigation"in this.element.data() && (this.wheelViewModeNavigation = this.element.data("view-mode-wheel-navigation")),
        this.wheelViewModeNavigationInverseDirection = !1,
        "wheelViewModeNavigationInverseDirection"in e ? this.wheelViewModeNavigationInverseDirection = e.wheelViewModeNavigationInverseDirection : "wheelViewModeNavigationInverseDirection"in this.element.data() && (this.wheelViewModeNavigationInverseDirection = this.element.data("view-mode-wheel-navigation-inverse-dir")),
        this.wheelViewModeNavigationDelay = 100,
        "wheelViewModeNavigationDelay"in e ? this.wheelViewModeNavigationDelay = e.wheelViewModeNavigationDelay : "wheelViewModeNavigationDelay"in this.element.data() && (this.wheelViewModeNavigationDelay = this.element.data("view-mode-wheel-navigation-delay")),
        this.startViewMode = 2,
        "startView"in e ? this.startViewMode = e.startView : "startView"in this.element.data() && (this.startViewMode = this.element.data("start-view")),
        this.startViewMode = _.convertViewMode(this.startViewMode),
        this.viewMode = this.startViewMode,
        this.viewSelect = this.minView,
        "viewSelect"in e ? this.viewSelect = e.viewSelect : "viewSelect"in this.element.data() && (this.viewSelect = this.element.data("view-select")),
        this.viewSelect = _.convertViewMode(this.viewSelect),
        this.forceParse = !0,
        "forceParse"in e ? this.forceParse = e.forceParse : "dateForceParse"in this.element.data() && (this.forceParse = this.element.data("date-force-parse")),
        3 === this.bootcssVer ? _.templateV3 : _.template); -1 !== s.indexOf("{iconType}"); )
            s = s.replace("{iconType}", this.icontype);
        for (; -1 !== s.indexOf("{leftArrow}"); )
            s = s.replace("{leftArrow}", this.icons.leftArrow);
        for (; -1 !== s.indexOf("{rightArrow}"); )
            s = s.replace("{rightArrow}", this.icons.rightArrow);
        this.picker = k(s).appendTo(this.isInline ? this.element : this.container).on({
            click: k.proxy(this.click, this),
            mousedown: k.proxy(this.mousedown, this)
        }),
        this.wheelViewModeNavigation && (k.fn.mousewheel ? this.picker.on({
            mousewheel: k.proxy(this.mousewheel, this)
        }) : console.log("Mouse Wheel event is not supported. Please include the jQuery Mouse Wheel plugin before enabling this option")),
        this.isInline ? this.picker.addClass("datetimepicker-inline") : this.picker.addClass("datetimepicker-dropdown-" + this.pickerPosition + " hui-dropdown-menu"),
        this.isRTL && (this.picker.addClass("datetimepicker-rtl"),
        t = 3 === this.bootcssVer ? ".prev span, .next span" : ".prev i, .next i",
        this.picker.find(t).toggleClass(this.icons.leftArrow + " " + this.icons.rightArrow)),
        k(document).on("mousedown", this.clickedOutside),
        this.autoclose = !1,
        "autoclose"in e ? this.autoclose = e.autoclose : "dateAutoclose"in this.element.data() && (this.autoclose = this.element.data("date-autoclose")),
        this.keyboardNavigation = !0,
        "keyboardNavigation"in e ? this.keyboardNavigation = e.keyboardNavigation : "dateKeyboardNavigation"in this.element.data() && (this.keyboardNavigation = this.element.data("date-keyboard-navigation")),
        this.todayBtn = e.todayBtn || this.element.data("date-today-btn") || !1,
        this.clearBtn = e.clearBtn || this.element.data("date-clear-btn") || !1,
        this.todayHighlight = e.todayHighlight || this.element.data("date-today-highlight") || !1,
        this.weekStart = (e.weekStart || this.element.data("date-weekstart") || M[this.language].weekStart || 0) % 7,
        this.weekEnd = (this.weekStart + 6) % 7,
        this.startDate = -1 / 0,
        this.endDate = 1 / 0,
        this.datesDisabled = [],
        this.daysOfWeekDisabled = [],
        this.setStartDate(e.startDate || this.element.data("date-startdate")),
        this.setEndDate(e.endDate || this.element.data("date-enddate")),
        this.setDatesDisabled(e.datesDisabled || this.element.data("date-dates-disabled")),
        this.setDaysOfWeekDisabled(e.daysOfWeekDisabled || this.element.data("date-days-of-week-disabled")),
        this.setMinutesDisabled(e.minutesDisabled || this.element.data("date-minute-disabled")),
        this.setHoursDisabled(e.hoursDisabled || this.element.data("date-hour-disabled")),
        this.fillDow(),
        this.fillMonths(),
        this.update(),
        this.showMode(),
        this.isInline && this.show()
    }
    y.prototype = {
        constructor: y,
        _events: [],
        _attachEvents: function() {
            this._detachEvents(),
            this.isInput ? this._events = [[this.element, {
                focus: k.proxy(this.show, this),
                keyup: k.proxy(this.update, this),
                keydown: k.proxy(this.keydown, this)
            }]] : this.component && this.hasInput ? (this._events = [[this.element.find("input"), {
                focus: k.proxy(this.show, this),
                keyup: k.proxy(this.update, this),
                keydown: k.proxy(this.keydown, this)
            }], [this.component, {
                click: k.proxy(this.show, this)
            }]],
            this.componentReset && this._events.push([this.componentReset, {
                click: k.proxy(this.reset, this)
            }])) : this.element.is("div") ? this.isInline = !0 : this._events = [[this.element, {
                click: k.proxy(this.show, this)
            }]];
            for (var t, e, i = 0; i < this._events.length; i++)
                t = this._events[i][0],
                e = this._events[i][1],
                t.on(e)
        },
        _detachEvents: function() {
            for (var t, e, i = 0; i < this._events.length; i++)
                t = this._events[i][0],
                e = this._events[i][1],
                t.off(e);
            this._events = []
        },
        show: function(t) {
            this.picker.show(),
            this.height = (this.component || this.element).outerHeight(),
            this.forceParse && this.update(),
            this.place(),
            k(window).on("resize", k.proxy(this.place, this)),
            t && (t.stopPropagation(),
            t.preventDefault()),
            this.isVisible = !0,
            this.element.trigger({
                type: "show",
                date: this.date
            })
        },
        hide: function(t) {
            !this.isVisible || this.isInline || (this.picker.hide(),
            k(window).off("resize", this.place),
            this.viewMode = this.startViewMode,
            this.showMode(),
            this.isInput || k(document).off("mousedown", this.hide),
            this.forceParse && (this.isInput && this.element.val() || this.hasInput && this.element.find("input").val()) && this.setValue(),
            this.isVisible = !1,
            this.element.trigger({
                type: "hide",
                date: this.date
            }))
        },
        remove: function() {
            this._detachEvents(),
            k(document).off("mousedown", this.clickedOutside),
            this.picker.remove(),
            delete this.picker,
            delete this.element.data().datetimepicker
        },
        getDate: function() {
            var t = this.getUTCDate();
            return new Date(t.getTime() + 6e4 * t.getTimezoneOffset())
        },
        getUTCDate: function() {
            return this.date
        },
        getInitialDate: function() {
            return this.initialDate
        },
        setInitialDate: function(t) {
            this.initialDate = t
        },
        setDate: function(t) {
            this.setUTCDate(new Date(t.getTime() - 6e4 * t.getTimezoneOffset()))
        },
        setUTCDate: function(t) {
            t >= this.startDate && t <= this.endDate ? (this.date = t,
            this.setValue(),
            this.viewDate = this.date,
            this.fill()) : this.element.trigger({
                type: "outOfRange",
                date: t,
                startDate: this.startDate,
                endDate: this.endDate
            })
        },
        setFormat: function(t) {
            var e;
            this.format = _.parseFormat(t, this.formatType),
            this.isInput ? e = this.element : this.component && (e = this.element.find("input")),
            e && e.val() && this.setValue()
        },
        setValue: function() {
            var t = this.getFormattedDate();
            this.isInput ? this.element.val(t) : (this.component && this.element.find("input").val(t),
            this.element.data("date", t)),
            this.linkField && k("#" + this.linkField).val(this.getFormattedDate(this.linkFormat))
        },
        getFormattedDate: function(t) {
            return t == a && (t = this.format),
            _.formatDate(this.date, t, this.language, this.formatType, this.timezone)
        },
        setStartDate: function(t) {
            this.startDate = t || -1 / 0,
            this.startDate !== -1 / 0 && (this.startDate = _.parseDate(this.startDate, this.format, this.language, this.formatType, this.timezone)),
            this.update(),
            this.updateNavArrows()
        },
        setEndDate: function(t) {
            this.endDate = t || 1 / 0,
            this.endDate !== 1 / 0 && (this.endDate = _.parseDate(this.endDate, this.format, this.language, this.formatType, this.timezone)),
            this.update(),
            this.updateNavArrows()
        },
        setDatesDisabled: function(t) {
            this.datesDisabled = t || [],
            k.isArray(this.datesDisabled) || (this.datesDisabled = this.datesDisabled.split(/,\s*/)),
            this.datesDisabled = k.map(this.datesDisabled, function(t) {
                return _.parseDate(t, this.format, this.language, this.formatType, this.timezone).toDateString()
            }),
            this.update(),
            this.updateNavArrows()
        },
        setTitle: function(t, e) {
            return this.picker.find(t).find("th:eq(1)").text(!1 === this.title ? e : this.title)
        },
        setDaysOfWeekDisabled: function(t) {
            this.daysOfWeekDisabled = t || [],
            k.isArray(this.daysOfWeekDisabled) || (this.daysOfWeekDisabled = this.daysOfWeekDisabled.split(/,\s*/)),
            this.daysOfWeekDisabled = k.map(this.daysOfWeekDisabled, function(t) {
                return parseInt(t, 10)
            }),
            this.update(),
            this.updateNavArrows()
        },
        setMinutesDisabled: function(t) {
            this.minutesDisabled = t || [],
            k.isArray(this.minutesDisabled) || (this.minutesDisabled = this.minutesDisabled.split(/,\s*/)),
            this.minutesDisabled = k.map(this.minutesDisabled, function(t) {
                return parseInt(t, 10)
            }),
            this.update(),
            this.updateNavArrows()
        },
        setHoursDisabled: function(t) {
            this.hoursDisabled = t || [],
            k.isArray(this.hoursDisabled) || (this.hoursDisabled = this.hoursDisabled.split(/,\s*/)),
            this.hoursDisabled = k.map(this.hoursDisabled, function(t) {
                return parseInt(t, 10)
            }),
            this.update(),
            this.updateNavArrows()
        },
        place: function() {
            var e, t, i, s, n;
            this.isInline || (this.zIndex || (e = 0,
            k("div").each(function() {
                var t = parseInt(k(this).css("zIndex"), 10);
                e < t && (e = t)
            }),
            this.zIndex = e + 10),
            s = (this.container instanceof k ? this.container : k(this.container)).offset(),
            this.component ? (i = (t = this.component.offset()).left,
            "bottom-left" != this.pickerPosition && "top-left" != this.pickerPosition || (i += this.component.outerWidth() - this.picker.outerWidth())) : (i = (t = this.element.offset()).left,
            "bottom-left" != this.pickerPosition && "top-left" != this.pickerPosition || (i += this.element.outerWidth() - this.picker.outerWidth())),
            (n = document.body.clientWidth || window.innerWidth) < i + 220 && (i = n - 220),
            n = "top-left" == this.pickerPosition || "top-right" == this.pickerPosition ? t.top - this.picker.outerHeight() : t.top + this.height,
            n -= s.top,
            i -= s.left,
            this.picker.css({
                top: n,
                left: i,
                zIndex: this.zIndex
            }))
        },
        update: function() {
            var t, e = !1;
            arguments && arguments.length && ("string" == typeof arguments[0] || arguments[0]instanceof Date) ? (t = arguments[0],
            e = !0) : ("string" == typeof (t = (this.isInput ? this.element : this.element.find("input")).val() || this.element.data("date") || this.initialDate) || t instanceof String) && (t = t.replace(/^\s+|\s+$/g, "")),
            t || (t = new Date,
            e = !1),
            this.date = _.parseDate(t, this.format, this.language, this.formatType, this.timezone),
            e && this.setValue(),
            this.date < this.startDate ? this.viewDate = new Date(this.startDate) : this.date > this.endDate ? this.viewDate = new Date(this.endDate) : this.viewDate = new Date(this.date),
            this.fill()
        },
        fillDow: function() {
            for (var t = this.weekStart, e = "<tr>"; t < this.weekStart + 7; )
                e += '<th class="dow">' + M[this.language].daysMin[t++ % 7] + "</th>";
            e += "</tr>",
            this.picker.find(".datetimepicker-days thead").append(e)
        },
        fillMonths: function() {
            for (var t = "", e = 0; e < 12; )
                t += '<span class="month">' + M[this.language].monthsShort[e++] + "</span>";
            this.picker.find(".datetimepicker-months td").html(t)
        },
        fill: function() {
            if (null != this.date && null != this.viewDate) {
                for (var t = new Date(this.viewDate), e = t.getUTCFullYear(), i = t.getUTCMonth(), s = t.getUTCDate(), n = t.getUTCHours(), o = t.getUTCMinutes(), a = this.startDate !== -1 / 0 ? this.startDate.getUTCFullYear() : -1 / 0, t = this.startDate !== -1 / 0 ? this.startDate.getUTCMonth() : -1 / 0, r = this.endDate !== 1 / 0 ? this.endDate.getUTCFullYear() : 1 / 0, l = this.endDate !== 1 / 0 ? this.endDate.getUTCMonth() + 1 : 1 / 0, h = new D(this.date.getUTCFullYear(),this.date.getUTCMonth(),this.date.getUTCDate()).valueOf(), d = new Date, c = (this.setTitle(".datetimepicker-days", M[this.language].months[i] + " " + e),
                "time" == this.formatViewType ? (u = this.getFormattedDate(),
                this.setTitle(".datetimepicker-hours", u),
                this.setTitle(".datetimepicker-minutes", u)) : (this.setTitle(".datetimepicker-hours", s + " " + M[this.language].months[i] + " " + e),
                this.setTitle(".datetimepicker-minutes", s + " " + M[this.language].months[i] + " " + e)),
                this.picker.find("tfoot th.today").text(M[this.language].today || M.en.today).toggle(!1 !== this.todayBtn),
                this.picker.find("tfoot th.clear").text(M[this.language].clear || M.en.clear).toggle(!1 !== this.clearBtn),
                this.updateNavArrows(),
                this.fillMonths(),
                D(e, i - 1, 28, 0, 0, 0, 0)), u = _.getDaysInMonth(c.getUTCFullYear(), c.getUTCMonth()), p = (c.setUTCDate(u),
                c.setUTCDate(u - (c.getUTCDay() - this.weekStart + 7) % 7),
                new Date(c)), f = (p.setUTCDate(p.getUTCDate() + 42),
                p = p.valueOf(),
                []); c.valueOf() < p; )
                    c.getUTCDay() == this.weekStart && f.push("<tr>"),
                    m = "",
                    c.getUTCFullYear() < e || c.getUTCFullYear() == e && c.getUTCMonth() < i ? m += " old" : (c.getUTCFullYear() > e || c.getUTCFullYear() == e && c.getUTCMonth() > i) && (m += " new"),
                    this.todayHighlight && c.getUTCFullYear() == d.getFullYear() && c.getUTCMonth() == d.getMonth() && c.getUTCDate() == d.getDate() && (m += " today"),
                    c.valueOf() == h && (m += " active"),
                    (c.valueOf() + 864e5 <= this.startDate || c.valueOf() > this.endDate || -1 !== k.inArray(c.getUTCDay(), this.daysOfWeekDisabled) || -1 !== k.inArray(c.toDateString(), this.datesDisabled)) && (m += " disabled"),
                    f.push('<td class="day' + m + '">' + c.getUTCDate() + "</td>"),
                    c.getUTCDay() == this.weekEnd && f.push("</tr>"),
                    c.setUTCDate(c.getUTCDate() + 1);
                this.picker.find(".datetimepicker-days tbody").empty().append(f.join(""));
                for (var m, f = [], v = "", g = "", y = this.hoursDisabled || [], w = 0; w < 24; w++)
                    -1 === y.indexOf(w) && (m = "",
                    (b = D(e, i, s, w)).valueOf() + 36e5 <= this.startDate || b.valueOf() > this.endDate ? m += " disabled" : n == w && (m += " active"),
                    this.showMeridian && 2 == M[this.language].meridiem.length ? ((v = w < 12 ? M[this.language].meridiem[0] : M[this.language].meridiem[1]) != g && ("" != g && f.push("</fieldset>"),
                    f.push('<fieldset class="hour"><legend>' + v.toUpperCase() + "</legend>")),
                    g = v,
                    f.push('<span class="hour' + m + " hour_" + (w < 12 ? "am" : "pm") + '">' + (w % 12 || 12) + "</span>"),
                    23 == w && f.push("</fieldset>")) : f.push('<span class="hour' + m + '">' + (w + ":00") + "</span>"));
                this.picker.find(".datetimepicker-hours td").html(f.join("")),
                f = [];
                for (var b, v = "", g = "", C = this.minutesDisabled || [], w = 0; w < 60; w += this.minuteStep)
                    -1 === C.indexOf(w) && (m = "",
                    (b = D(e, i, s, n, w, 0)).valueOf() < this.startDate || b.valueOf() > this.endDate ? m += " disabled" : Math.floor(o / this.minuteStep) == Math.floor(w / this.minuteStep) && (m += " active"),
                    this.showMeridian && 2 == M[this.language].meridiem.length ? ((v = n < 12 ? M[this.language].meridiem[0] : M[this.language].meridiem[1]) != g && ("" != g && f.push("</fieldset>"),
                    f.push('<fieldset class="minute"><legend>' + v.toUpperCase() + "</legend>")),
                    g = v,
                    f.push('<span class="minute' + m + '">' + (n % 12 || 12) + ":" + (w < 10 ? "0" + w : w) + "</span>"),
                    59 == w && f.push("</fieldset>")) : f.push('<span class="minute' + m + '">' + n + ":" + (w < 10 ? "0" + w : w) + "</span>"));
                this.picker.find(".datetimepicker-minutes td").html(f.join(""));
                var T = this.date.getUTCFullYear()
                  , u = this.setTitle(".datetimepicker-months", e).end().find("span").removeClass("active")
                  , x = (T == e && (x = u.length - 12,
                u.eq(this.date.getUTCMonth() + x).addClass("active")),
                (e < a || r < e) && u.addClass("disabled"),
                e == a && u.slice(0, t).addClass("disabled"),
                e == r && u.slice(l).addClass("disabled"),
                f = "",
                e = 10 * parseInt(e / 10, 10),
                this.setTitle(".datetimepicker-years", e + "-" + (e + 9)).end().find("td"));
                --e;
                for (w = -1; w < 11; w++)
                    f += '<span class="year' + (-1 == w || 10 == w ? " old" : "") + (T == e ? " active" : "") + (e < a || r < e ? " disabled" : "") + '">' + e + "</span>",
                    e += 1;
                x.html(f),
                this.place()
            }
        },
        updateNavArrows: function() {
            var t = new Date(this.viewDate)
              , e = t.getUTCFullYear()
              , i = t.getUTCMonth()
              , s = t.getUTCDate()
              , n = t.getUTCHours();
            switch (this.viewMode) {
            case 0:
                this.startDate !== -1 / 0 && e <= this.startDate.getUTCFullYear() && i <= this.startDate.getUTCMonth() && s <= this.startDate.getUTCDate() && n <= this.startDate.getUTCHours() ? this.picker.find(".prev").css({
                    visibility: "hidden"
                }) : this.picker.find(".prev").css({
                    visibility: "visible"
                }),
                this.endDate !== 1 / 0 && e >= this.endDate.getUTCFullYear() && i >= this.endDate.getUTCMonth() && s >= this.endDate.getUTCDate() && n >= this.endDate.getUTCHours() ? this.picker.find(".next").css({
                    visibility: "hidden"
                }) : this.picker.find(".next").css({
                    visibility: "visible"
                });
                break;
            case 1:
                this.startDate !== -1 / 0 && e <= this.startDate.getUTCFullYear() && i <= this.startDate.getUTCMonth() && s <= this.startDate.getUTCDate() ? this.picker.find(".prev").css({
                    visibility: "hidden"
                }) : this.picker.find(".prev").css({
                    visibility: "visible"
                }),
                this.endDate !== 1 / 0 && e >= this.endDate.getUTCFullYear() && i >= this.endDate.getUTCMonth() && s >= this.endDate.getUTCDate() ? this.picker.find(".next").css({
                    visibility: "hidden"
                }) : this.picker.find(".next").css({
                    visibility: "visible"
                });
                break;
            case 2:
                this.startDate !== -1 / 0 && e <= this.startDate.getUTCFullYear() && i <= this.startDate.getUTCMonth() ? this.picker.find(".prev").css({
                    visibility: "hidden"
                }) : this.picker.find(".prev").css({
                    visibility: "visible"
                }),
                this.endDate !== 1 / 0 && e >= this.endDate.getUTCFullYear() && i >= this.endDate.getUTCMonth() ? this.picker.find(".next").css({
                    visibility: "hidden"
                }) : this.picker.find(".next").css({
                    visibility: "visible"
                });
                break;
            case 3:
            case 4:
                this.startDate !== -1 / 0 && e <= this.startDate.getUTCFullYear() ? this.picker.find(".prev").css({
                    visibility: "hidden"
                }) : this.picker.find(".prev").css({
                    visibility: "visible"
                }),
                this.endDate !== 1 / 0 && e >= this.endDate.getUTCFullYear() ? this.picker.find(".next").css({
                    visibility: "hidden"
                }) : this.picker.find(".next").css({
                    visibility: "visible"
                })
            }
        },
        mousewheel: function(t) {
            t.preventDefault(),
            t.stopPropagation(),
            this.wheelPause || (this.wheelPause = !0,
            t = 0 < (t = t.originalEvent.wheelDelta) ? 1 : 0 === t ? 0 : -1,
            this.wheelViewModeNavigationInverseDirection && (t = -t),
            this.showMode(t),
            setTimeout(k.proxy(function() {
                this.wheelPause = !1
            }, this), this.wheelViewModeNavigationDelay))
        },
        click: function(t) {
            t.stopPropagation(),
            t.preventDefault();
            var e = k(t.target).closest("span, td, th, legend");
            if (1 == (e = e.is("." + this.icontype) ? k(e).parent().closest("span, td, th, legend") : e).length)
                if (e.is(".disabled"))
                    this.element.trigger({
                        type: "outOfRange",
                        date: this.viewDate,
                        startDate: this.startDate,
                        endDate: this.endDate
                    });
                else
                    switch (e[0].nodeName.toLowerCase()) {
                    case "th":
                        switch (e[0].className) {
                        case "switch":
                            this.showMode(1);
                            break;
                        case "prev":
                        case "next":
                            var i = _.modes[this.viewMode].navStep * ("prev" == e[0].className ? -1 : 1);
                            switch (this.viewMode) {
                            case 0:
                                this.viewDate = this.moveHour(this.viewDate, i);
                                break;
                            case 1:
                                this.viewDate = this.moveDate(this.viewDate, i);
                                break;
                            case 2:
                                this.viewDate = this.moveMonth(this.viewDate, i);
                                break;
                            case 3:
                            case 4:
                                this.viewDate = this.moveYear(this.viewDate, i)
                            }
                            this.fill(),
                            this.element.trigger({
                                type: e[0].className + ":" + this.convertViewModeText(this.viewMode),
                                date: this.viewDate,
                                startDate: this.startDate,
                                endDate: this.endDate
                            });
                            break;
                        case "clear":
                            this.reset(),
                            this.autoclose && this.hide();
                            break;
                        case "today":
                            var s = new Date;
                            (s = D(s.getFullYear(), s.getMonth(), s.getDate(), s.getHours(), s.getMinutes(), s.getSeconds(), 0)) < this.startDate ? s = this.startDate : s > this.endDate && (s = this.endDate),
                            this.viewMode = this.startViewMode,
                            this.showMode(0),
                            this._setDate(s),
                            this.fill(),
                            this.autoclose && this.hide()
                        }
                        break;
                    case "span":
                        e.is(".disabled") || (o = this.viewDate.getUTCFullYear(),
                        a = this.viewDate.getUTCMonth(),
                        n = this.viewDate.getUTCDate(),
                        r = this.viewDate.getUTCHours(),
                        l = this.viewDate.getUTCMinutes(),
                        h = this.viewDate.getUTCSeconds(),
                        e.is(".month") ? (this.viewDate.setUTCDate(1),
                        a = e.parent().find("span").index(e),
                        n = this.viewDate.getUTCDate(),
                        this.viewDate.setUTCMonth(a),
                        this.element.trigger({
                            type: "changeMonth",
                            date: this.viewDate
                        }),
                        3 <= this.viewSelect && this._setDate(D(o, a, n, r, l, h, 0))) : e.is(".year") ? (this.viewDate.setUTCDate(1),
                        o = parseInt(e.text(), 10) || 0,
                        this.viewDate.setUTCFullYear(o),
                        this.element.trigger({
                            type: "changeYear",
                            date: this.viewDate
                        }),
                        4 <= this.viewSelect && this._setDate(D(o, a, n, r, l, h, 0))) : e.is(".hour") ? (r = parseInt(e.text(), 10) || 0,
                        (e.hasClass("hour_am") || e.hasClass("hour_pm")) && (12 == r && e.hasClass("hour_am") ? r = 0 : 12 != r && e.hasClass("hour_pm") && (r += 12)),
                        this.viewDate.setUTCHours(r),
                        this.element.trigger({
                            type: "changeHour",
                            date: this.viewDate
                        }),
                        1 <= this.viewSelect && this._setDate(D(o, a, n, r, l, h, 0))) : e.is(".minute") && (l = parseInt(e.text().substr(e.text().indexOf(":") + 1), 10) || 0,
                        this.viewDate.setUTCMinutes(l),
                        this.element.trigger({
                            type: "changeMinute",
                            date: this.viewDate
                        }),
                        0 <= this.viewSelect && this._setDate(D(o, a, n, r, l, h, 0))),
                        0 != this.viewMode ? (d = this.viewMode,
                        this.showMode(-1),
                        this.fill(),
                        d == this.viewMode && this.autoclose && this.hide()) : (this.fill(),
                        this.autoclose && this.hide()));
                        break;
                    case "td":
                        e.is(".day") && !e.is(".disabled") && (n = parseInt(e.text(), 10) || 1,
                        o = this.viewDate.getUTCFullYear(),
                        a = this.viewDate.getUTCMonth(),
                        r = this.viewDate.getUTCHours(),
                        l = this.viewDate.getUTCMinutes(),
                        h = this.viewDate.getUTCSeconds(),
                        e.is(".old") ? 0 === a ? (a = 11,
                        --o) : --a : e.is(".new") && (11 == a ? (a = 0,
                        o += 1) : a += 1),
                        this.viewDate.setUTCFullYear(o),
                        this.viewDate.setUTCMonth(a, n),
                        this.element.trigger({
                            type: "changeDay",
                            date: this.viewDate
                        }),
                        2 <= this.viewSelect && this._setDate(D(o, a, n, r, l, h, 0)));
                        var n, o, a, r, l, h, d = this.viewMode;
                        this.showMode(-1),
                        this.fill(),
                        d == this.viewMode && this.autoclose && this.hide()
                    }
        },
        _setDate: function(t, e) {
            var i;
            e && "date" != e || (this.date = t),
            e && "view" != e || (this.viewDate = t),
            this.fill(),
            this.setValue(),
            this.isInput ? i = this.element : this.component && (i = this.element.find("input")),
            i && (i.change(),
            this.autoclose),
            this.element.trigger({
                type: "changeDate",
                date: this.getDate()
            }),
            null == t && (this.date = this.viewDate)
        },
        moveMinute: function(t, e) {
            if (!e)
                return t;
            t = new Date(t.valueOf());
            return t.setUTCMinutes(t.getUTCMinutes() + e * this.minuteStep),
            t
        },
        moveHour: function(t, e) {
            if (!e)
                return t;
            t = new Date(t.valueOf());
            return t.setUTCHours(t.getUTCHours() + e),
            t
        },
        moveDate: function(t, e) {
            if (!e)
                return t;
            t = new Date(t.valueOf());
            return t.setUTCDate(t.getUTCDate() + e),
            t
        },
        moveMonth: function(t, e) {
            if (!e)
                return t;
            var i, s, n = new Date(t.valueOf()), o = n.getUTCDate(), a = n.getUTCMonth(), r = Math.abs(e);
            if (e = 0 < e ? 1 : -1,
            1 == r)
                s = -1 == e ? function() {
                    return n.getUTCMonth() == a
                }
                : function() {
                    return n.getUTCMonth() != i
                }
                ,
                i = a + e,
                n.setUTCMonth(i),
                (i < 0 || 11 < i) && (i = (i + 12) % 12);
            else {
                for (var l = 0; l < r; l++)
                    n = this.moveMonth(n, e);
                i = n.getUTCMonth(),
                n.setUTCDate(o),
                s = function() {
                    return i != n.getUTCMonth()
                }
            }
            for (; s(); )
                n.setUTCDate(--o),
                n.setUTCMonth(i);
            return n
        },
        moveYear: function(t, e) {
            return this.moveMonth(t, 12 * e)
        },
        dateWithinRange: function(t) {
            return t >= this.startDate && t <= this.endDate
        },
        keydown: function(t) {
            if (this.picker.is(":not(:visible)"))
                27 == t.keyCode && this.show();
            else {
                var e, i, s, n, o = !1;
                switch (t.keyCode) {
                case 27:
                    this.hide(),
                    t.preventDefault();
                    break;
                case 37:
                case 39:
                    if (!this.keyboardNavigation)
                        break;
                    s = 37 == t.keyCode ? -1 : 1,
                    viewMode = this.viewMode,
                    t.ctrlKey ? viewMode += 2 : t.shiftKey && (viewMode += 1),
                    4 == viewMode ? (e = this.moveYear(this.date, s),
                    i = this.moveYear(this.viewDate, s)) : 3 == viewMode ? (e = this.moveMonth(this.date, s),
                    i = this.moveMonth(this.viewDate, s)) : 2 == viewMode ? (e = this.moveDate(this.date, s),
                    i = this.moveDate(this.viewDate, s)) : 1 == viewMode ? (e = this.moveHour(this.date, s),
                    i = this.moveHour(this.viewDate, s)) : 0 == viewMode && (e = this.moveMinute(this.date, s),
                    i = this.moveMinute(this.viewDate, s)),
                    this.dateWithinRange(e) && (this.date = e,
                    this.viewDate = i,
                    this.setValue(),
                    this.update(),
                    t.preventDefault(),
                    o = !0);
                    break;
                case 38:
                case 40:
                    if (!this.keyboardNavigation)
                        break;
                    s = 38 == t.keyCode ? -1 : 1,
                    viewMode = this.viewMode,
                    t.ctrlKey ? viewMode += 2 : t.shiftKey && (viewMode += 1),
                    4 == viewMode ? (e = this.moveYear(this.date, s),
                    i = this.moveYear(this.viewDate, s)) : 3 == viewMode ? (e = this.moveMonth(this.date, s),
                    i = this.moveMonth(this.viewDate, s)) : 2 == viewMode ? (e = this.moveDate(this.date, 7 * s),
                    i = this.moveDate(this.viewDate, 7 * s)) : 1 == viewMode ? i = this.showMeridian ? (e = this.moveHour(this.date, 6 * s),
                    this.moveHour(this.viewDate, 6 * s)) : (e = this.moveHour(this.date, 4 * s),
                    this.moveHour(this.viewDate, 4 * s)) : 0 == viewMode && (e = this.moveMinute(this.date, 4 * s),
                    i = this.moveMinute(this.viewDate, 4 * s)),
                    this.dateWithinRange(e) && (this.date = e,
                    this.viewDate = i,
                    this.setValue(),
                    this.update(),
                    t.preventDefault(),
                    o = !0);
                    break;
                case 13:
                    0 != this.viewMode ? (s = this.viewMode,
                    this.showMode(-1),
                    this.fill(),
                    s == this.viewMode && this.autoclose && this.hide()) : (this.fill(),
                    this.autoclose && this.hide()),
                    t.preventDefault();
                    break;
                case 9:
                    this.hide()
                }
                o && (this.isInput ? n = this.element : this.component && (n = this.element.find("input")),
                n && n.change(),
                this.element.trigger({
                    type: "changeDate",
                    date: this.getDate()
                }))
            }
        },
        showMode: function(t) {
            t && (t = Math.max(0, Math.min(_.modes.length - 1, this.viewMode + t))) >= this.minView && t <= this.maxView && (this.element.trigger({
                type: "changeMode",
                date: this.viewDate,
                oldViewMode: this.viewMode,
                newViewMode: t
            }),
            this.viewMode = t),
            this.picker.find(">div").hide().filter(".datetimepicker-" + _.modes[this.viewMode].clsName).css("display", "block"),
            this.updateNavArrows()
        },
        reset: function(t) {
            this._setDate(null, "date")
        },
        convertViewModeText: function(t) {
            switch (t) {
            case 4:
                return "decade";
            case 3:
                return "year";
            case 2:
                return "month";
            case 1:
                return "day";
            case 0:
                return "hour"
            }
        }
    };
    var t = k.fn.datetimepicker
      , M = (k.fn.datetimepicker = function(s) {
        var n, o = Array.apply(null, arguments);
        return o.shift(),
        this.each(function() {
            var t = k(this)
              , e = t.data("datetimepicker")
              , i = "object" == typeof s && s;
            if (e || t.data("datetimepicker", e = new y(this,k.extend({}, k.fn.datetimepicker.defaults, i))),
            "string" == typeof s && "function" == typeof e[s] && (n = e[s].apply(e, o)) !== a)
                return !1
        }),
        n !== a ? n : this
    }
    ,
    k.fn.datetimepicker.defaults = {},
    k.fn.datetimepicker.Constructor = y,
    k.fn.datetimepicker.dates = {
        en: {
            days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"],
            daysShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],
            daysMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa", "Su"],
            months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
            monthsShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
            meridiem: ["am", "pm"],
            suffix: ["st", "nd", "rd", "th"],
            today: "Today",
            clear: "Clear"
        }
    })
      , _ = {
        modes: [{
            clsName: "minutes",
            navFnc: "Hours",
            navStep: 1
        }, {
            clsName: "hours",
            navFnc: "Date",
            navStep: 1
        }, {
            clsName: "days",
            navFnc: "Month",
            navStep: 1
        }, {
            clsName: "months",
            navFnc: "FullYear",
            navStep: 1
        }, {
            clsName: "years",
            navFnc: "FullYear",
            navStep: 10
        }],
        isLeapYear: function(t) {
            return t % 4 == 0 && t % 100 != 0 || t % 400 == 0
        },
        getDaysInMonth: function(t, e) {
            return [31, _.isLeapYear(t) ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][e]
        },
        getDefaultFormat: function(t, e) {
            if ("standard" == t)
                return "input" == e ? "yyyy-mm-dd hh:ii" : "yyyy-mm-dd hh:ii:ss";
            if ("php" == t)
                return "input" == e ? "Y-m-d H:i" : "Y-m-d H:i:s";
            throw new Error("Invalid format type.")
        },
        validParts: function(t) {
            if ("standard" == t)
                return /t|hh?|HH?|p|P|z|Z|ii?|ss?|dd?|DD?|mm?|MM?|yy(?:yy)?/g;
            if ("php" == t)
                return /[dDjlNwzFmMnStyYaABgGhHis]/g;
            throw new Error("Invalid format type.")
        },
        nonpunctuation: /[^ -\/:-@\[-`{-~\t\n\rTZ]+/g,
        parseFormat: function(t, e) {
            var i = t.replace(this.validParts(e), "\0").split("\0")
              , t = t.match(this.validParts(e));
            if (i && i.length && t && 0 != t.length)
                return {
                    separators: i,
                    parts: t
                };
            throw new Error("Invalid date format.")
        },
        parseDate: function(t, e, i, s, n) {
            var o;
            if (t instanceof Date)
                return (o = new Date(t.valueOf() - 6e4 * t.getTimezoneOffset())).setMilliseconds(0),
                o;
            if (/^\d{4}\-\d{1,2}\-\d{1,2}$/.test(t) && (e = this.parseFormat("yyyy-mm-dd", s)),
            /^\d{4}\-\d{1,2}\-\d{1,2}[T ]\d{1,2}\:\d{1,2}$/.test(t) && (e = this.parseFormat("yyyy-mm-dd hh:ii", s)),
            /^\d{4}\-\d{1,2}\-\d{1,2}[T ]\d{1,2}\:\d{1,2}\:\d{1,2}[Z]{0,1}$/.test(t) && (e = this.parseFormat("yyyy-mm-dd hh:ii:ss", s)),
            /^[-+]\d+[dmwy]([\s,]+[-+]\d+[dmwy])*$/.test(t)) {
                var a, r = /([-+]\d+)([dmwy])/, l = t.match(/([-+]\d+)([dmwy])/g);
                t = new Date;
                for (var h = 0; h < l.length; h++)
                    switch (u = r.exec(l[h]),
                    a = parseInt(u[1]),
                    u[2]) {
                    case "d":
                        t.setUTCDate(t.getUTCDate() + a);
                        break;
                    case "m":
                        t = y.prototype.moveMonth.call(y.prototype, t, a);
                        break;
                    case "w":
                        t.setUTCDate(t.getUTCDate() + 7 * a);
                        break;
                    case "y":
                        t = y.prototype.moveYear.call(y.prototype, t, a)
                    }
                return D(t.getUTCFullYear(), t.getUTCMonth(), t.getUTCDate(), t.getUTCHours(), t.getUTCMinutes(), t.getUTCSeconds(), 0)
            }
            var d, c, u, l = t && t.toString().match(this.nonpunctuation) || [], t = new Date(0,0,0,0,0,0,0), p = {}, f = ["hh", "h", "ii", "i", "ss", "s", "yyyy", "yy", "M", "MM", "m", "mm", "D", "DD", "d", "dd", "H", "HH", "p", "P", "z", "Z"], m = {
                hh: function(t, e) {
                    return t.setUTCHours(e)
                },
                h: function(t, e) {
                    return t.setUTCHours(e)
                },
                HH: function(t, e) {
                    return t.setUTCHours(12 == e ? 0 : e)
                },
                H: function(t, e) {
                    return t.setUTCHours(12 == e ? 0 : e)
                },
                ii: function(t, e) {
                    return t.setUTCMinutes(e)
                },
                i: function(t, e) {
                    return t.setUTCMinutes(e)
                },
                ss: function(t, e) {
                    return t.setUTCSeconds(e)
                },
                s: function(t, e) {
                    return t.setUTCSeconds(e)
                },
                yyyy: function(t, e) {
                    return t.setUTCFullYear(e)
                },
                yy: function(t, e) {
                    return t.setUTCFullYear(2e3 + e)
                },
                m: function(t, e) {
                    for (--e; e < 0; )
                        e += 12;
                    for (t.setUTCMonth(e %= 12); t.getUTCMonth() != e; ) {
                        if (isNaN(t.getUTCMonth()))
                            return t;
                        t.setUTCDate(t.getUTCDate() - 1)
                    }
                    return t
                },
                d: function(t, e) {
                    return t.setUTCDate(e)
                },
                p: function(t, e) {
                    return t.setUTCHours(1 == e ? t.getUTCHours() + 12 : t.getUTCHours())
                },
                z: function() {
                    return n
                }
            };
            if (m.M = m.MM = m.mm = m.m,
            m.dd = m.d,
            m.P = m.p,
            m.Z = m.z,
            t = D(t.getFullYear(), t.getMonth(), t.getDate(), t.getHours(), t.getMinutes(), t.getSeconds()),
            l.length == e.parts.length) {
                for (var h = 0, v = e.parts.length; h < v; h++) {
                    if (d = parseInt(l[h], 10),
                    u = e.parts[h],
                    isNaN(d))
                        switch (u) {
                        case "MM":
                            c = k(M[i].months).filter(function() {
                                var t = this.slice(0, l[h].length);
                                return t == l[h].slice(0, t.length)
                            }),
                            d = k.inArray(c[0], M[i].months) + 1;
                            break;
                        case "M":
                            c = k(M[i].monthsShort).filter(function() {
                                var t = this.slice(0, l[h].length)
                                  , e = l[h].slice(0, t.length);
                                return t.toLowerCase() == e.toLowerCase()
                            }),
                            d = k.inArray(c[0], M[i].monthsShort) + 1;
                            break;
                        case "p":
                        case "P":
                            d = k.inArray(l[h].toLowerCase(), M[i].meridiem)
                        }
                    p[u] = d
                }
                for (var g, h = 0; h < f.length; h++)
                    (g = f[h])in p && !isNaN(p[g]) && m[g](t, p[g])
            }
            return t
        },
        formatDate: function(t, e, i, s, n) {
            if (null == t)
                return "";
            var o;
            if ("standard" == s)
                o = {
                    t: t.getTime(),
                    yy: t.getUTCFullYear().toString().substring(2),
                    yyyy: t.getUTCFullYear(),
                    m: t.getUTCMonth() + 1,
                    M: M[i].monthsShort[t.getUTCMonth()],
                    MM: M[i].months[t.getUTCMonth()],
                    d: t.getUTCDate(),
                    D: M[i].daysShort[t.getUTCDay()],
                    DD: M[i].days[t.getUTCDay()],
                    p: 2 == M[i].meridiem.length ? M[i].meridiem[t.getUTCHours() < 12 ? 0 : 1] : "",
                    h: t.getUTCHours(),
                    i: t.getUTCMinutes(),
                    s: t.getUTCSeconds(),
                    z: n
                },
                2 == M[i].meridiem.length ? o.H = o.h % 12 == 0 ? 12 : o.h % 12 : o.H = o.h,
                o.HH = (o.H < 10 ? "0" : "") + o.H,
                o.P = o.p.toUpperCase(),
                o.Z = o.z,
                o.hh = (o.h < 10 ? "0" : "") + o.h,
                o.ii = (o.i < 10 ? "0" : "") + o.i,
                o.ss = (o.s < 10 ? "0" : "") + o.s,
                o.dd = (o.d < 10 ? "0" : "") + o.d,
                o.mm = (o.m < 10 ? "0" : "") + o.m;
            else {
                if ("php" != s)
                    throw new Error("Invalid format type.");
                (o = {
                    y: t.getUTCFullYear().toString().substring(2),
                    Y: t.getUTCFullYear(),
                    F: M[i].months[t.getUTCMonth()],
                    M: M[i].monthsShort[t.getUTCMonth()],
                    n: t.getUTCMonth() + 1,
                    t: _.getDaysInMonth(t.getUTCFullYear(), t.getUTCMonth()),
                    j: t.getUTCDate(),
                    l: M[i].days[t.getUTCDay()],
                    D: M[i].daysShort[t.getUTCDay()],
                    w: t.getUTCDay(),
                    N: 0 == t.getUTCDay() ? 7 : t.getUTCDay(),
                    S: t.getUTCDate() % 10 <= M[i].suffix.length ? M[i].suffix[t.getUTCDate() % 10 - 1] : "",
                    a: 2 == M[i].meridiem.length ? M[i].meridiem[t.getUTCHours() < 12 ? 0 : 1] : "",
                    g: t.getUTCHours() % 12 == 0 ? 12 : t.getUTCHours() % 12,
                    G: t.getUTCHours(),
                    i: t.getUTCMinutes(),
                    s: t.getUTCSeconds()
                }).m = (o.n < 10 ? "0" : "") + o.n,
                o.d = (o.j < 10 ? "0" : "") + o.j,
                o.A = o.a.toString().toUpperCase(),
                o.h = (o.g < 10 ? "0" : "") + o.g,
                o.H = (o.G < 10 ? "0" : "") + o.G,
                o.i = (o.i < 10 ? "0" : "") + o.i,
                o.s = (o.s < 10 ? "0" : "") + o.s
            }
            for (var t = [], a = k.extend([], e.separators), r = 0, l = e.parts.length; r < l; r++)
                a.length && t.push(a.shift()),
                t.push(o[e.parts[r]]);
            return a.length && t.push(a.shift()),
            t.join("")
        },
        convertViewMode: function(t) {
            switch (t) {
            case 4:
            case "decade":
                t = 4;
                break;
            case 3:
            case "year":
                t = 3;
                break;
            case 2:
            case "month":
                t = 2;
                break;
            case 1:
            case "day":
                t = 1;
                break;
            case 0:
            case "hour":
                t = 0
            }
            return t
        },
        headTemplate: '<thead><tr><th class="prev"><i class="{iconType} {leftArrow}"/></th><th colspan="5" class="switch"></th><th class="next"><i class="{iconType} {rightArrow}"/></th></tr></thead>',
        headTemplateV3: '<thead><tr><th class="prev"><span class="{iconType} {leftArrow}"></span> </th><th colspan="5" class="switch"></th><th class="next"><span class="{iconType} {rightArrow}"></span> </th></tr></thead>',
        contTemplate: '<tbody><tr><td colspan="7"></td></tr></tbody>',
        footTemplate: '<tfoot><tr><th colspan="7" class="today"></th></tr><tr><th colspan="7" class="clear"></th></tr></tfoot>'
    };
    _.template = '<div class="datetimepicker"><div class="datetimepicker-minutes"><table class=" table-condensed">' + _.headTemplate + _.contTemplate + _.footTemplate + '</table></div><div class="datetimepicker-hours"><table class=" table-condensed">' + _.headTemplate + _.contTemplate + _.footTemplate + '</table></div><div class="datetimepicker-days"><table class=" table-condensed">' + _.headTemplate + "<tbody></tbody>" + _.footTemplate + '</table></div><div class="datetimepicker-months"><table class="hui-table-condensed">' + _.headTemplate + _.contTemplate + _.footTemplate + '</table></div><div class="datetimepicker-years"><table class="hui-table-condensed">' + _.headTemplate + _.contTemplate + _.footTemplate + "</table></div></div>",
    _.templateV3 = '<div class="datetimepicker"><div class="datetimepicker-minutes"><table class=" table-condensed">' + _.headTemplateV3 + _.contTemplate + _.footTemplate + '</table></div><div class="datetimepicker-hours"><table class=" table-condensed">' + _.headTemplateV3 + _.contTemplate + _.footTemplate + '</table></div><div class="datetimepicker-days"><table class=" table-condensed">' + _.headTemplateV3 + "<tbody></tbody>" + _.footTemplate + '</table></div><div class="datetimepicker-months"><table class="hui-table-condensed">' + _.headTemplateV3 + _.contTemplate + _.footTemplate + '</table></div><div class="datetimepicker-years"><table class="hui-table-condensed">' + _.headTemplateV3 + _.contTemplate + _.footTemplate + "</table></div></div>",
    k.fn.datetimepicker.DPGlobal = _,
    k.fn.datetimepicker.noConflict = function() {
        return k.fn.datetimepicker = t,
        this
    }
    ,
    k(document).on("focus.datetimepicker.data-api click.datetimepicker.data-api", '[data-provide="datetimepicker"]', function(t) {
        var e = k(this);
        e.data("datetimepicker") || (t.preventDefault(),
        e.datetimepicker("show"))
    }),
    k(function() {
        k('[data-provide="datetimepicker-inline"]').datetimepicker()
    })
}),
function(h) {
    "use strict";
    h.fn.bootstrapSwitch = function(t) {
        var e = {
            init: function() {
                return this.each(function() {
                    function e(t) {
                        t.siblings("label").trigger("mousedown").trigger("mouseup").trigger("click")
                    }
                    var t, s, i = h(this), n = "", o = i.attr("class"), a = "ON", r = "OFF", l = !1;
                    h.each(["size-MINI", "size-S", "size-L"], function(t, e) {
                        0 <= o.indexOf(e) && (n = e)
                    }),
                    i.addClass("has-switch"),
                    void 0 !== i.data("on") && (t = "switch-" + i.data("on")),
                    void 0 !== i.data("on-label") && (a = i.data("on-label")),
                    void 0 !== i.data("off-label") && (r = i.data("off-label")),
                    void 0 !== i.data("icon") && (l = i.data("icon")),
                    a = h("<span>").addClass("switch-left").addClass(n).addClass(t).html(a),
                    t = "",
                    void 0 !== i.data("off") && (t = "switch-" + i.data("off")),
                    t = h("<span>").addClass("switch-right").addClass(n).addClass(t).html(r),
                    r = h("<label>").html("&nbsp;").addClass(n).attr("for", i.find("input").attr("id")),
                    l && r.html('<i class="icon icon-' + l + '"></i>'),
                    l = i.find(":checkbox").wrap(h("<div>")).parent().data("animated", !1),
                    !1 !== i.data("animated") && l.addClass("switch-animate").data("animated", !0),
                    l.append(a).append(r).append(t),
                    i.find(">div").addClass(i.find("input").is(":checked") ? "switch-on" : "switch-off"),
                    i.find("input").is(":disabled") && h(this).addClass("deactivate");
                    i.on("keydown", function(t) {
                        32 === t.keyCode && (t.stopImmediatePropagation(),
                        t.preventDefault(),
                        e(h(t.target).find("span:first")))
                    }),
                    a.on("click", function(t) {
                        e(h(this))
                    }),
                    t.on("click", function(t) {
                        e(h(this))
                    }),
                    i.find("input").on("change", function(t) {
                        var e = h(this)
                          , i = e.parent()
                          , s = e.is(":checked")
                          , n = i.is(".switch-off");
                        t.preventDefault(),
                        i.css("left", ""),
                        n === s && (s ? i.removeClass("switch-off").addClass("switch-on") : i.removeClass("switch-on").addClass("switch-off"),
                        !1 !== i.data("animated") && i.addClass("switch-animate"),
                        i.parent().trigger("switch-change", {
                            el: e,
                            value: s
                        }))
                    }),
                    i.find("label").on("mousedown touchstart", function(t) {
                        var e = h(this);
                        s = !1,
                        t.preventDefault(),
                        t.stopImmediatePropagation(),
                        e.closest("div").removeClass("switch-animate"),
                        e.closest(".has-switch").is(".deactivate") ? e.unbind("click") : (e.on("mousemove touchmove", function(t) {
                            var e = h(this).closest(".switch")
                              , t = ((t.pageX || t.originalEvent.targetTouches[0].pageX) - e.offset().left) / e.width() * 100;
                            s = !0,
                            t < 25 ? t = 25 : 75 < t && (t = 75),
                            e.find(">div").css("left", t - 75 + "%")
                        }),
                        e.on("click touchend", function(t) {
                            var e = h(this)
                              , i = h(t.target).siblings("input");
                            t.stopImmediatePropagation(),
                            t.preventDefault(),
                            e.unbind("mouseleave"),
                            s ? i.prop("checked", !(parseInt(e.parent().css("left")) < -25)) : i.prop("checked", !i.is(":checked")),
                            s = !1,
                            i.trigger("change")
                        }),
                        e.on("mouseleave", function(t) {
                            var e = h(this)
                              , i = e.siblings("input");
                            t.preventDefault(),
                            t.stopImmediatePropagation(),
                            e.unbind("mouseleave"),
                            e.trigger("mouseup"),
                            i.prop("checked", !(parseInt(e.parent().css("left")) < -25)).trigger("change")
                        }),
                        e.on("mouseup", function(t) {
                            t.stopImmediatePropagation(),
                            t.preventDefault(),
                            h(this).unbind("mousemove")
                        }))
                    })
                })
            },
            toggleActivation: function() {
                h(this).toggleClass("deactivate")
            },
            isActive: function() {
                return !h(this).hasClass("deactivate")
            },
            setActive: function(t) {
                t ? h(this).removeClass("deactivate") : h(this).addClass("deactivate")
            },
            toggleState: function(t) {
                var e = h(this).find("input:checkbox");
                e.prop("checked", !e.is(":checked")).trigger("change", t)
            },
            setState: function(t, e) {
                h(this).find("input:checkbox").prop("checked", t).trigger("change", e)
            },
            status: function() {
                return h(this).find("input:checkbox").is(":checked")
            },
            destroy: function() {
                var t = h(this).find("div");
                return t.find(":not(input:checkbox)").remove(),
                (t = t.children()).unwrap().unwrap(),
                t.unbind("change"),
                t
            }
        };
        return e[t] ? e[t].apply(this, Array.prototype.slice.call(arguments, 1)) : "object" != typeof t && t ? void h.error("Method " + t + " does not exist!") : e.init.apply(this, arguments)
    }
}(jQuery),
$(function() {
    $(".switch").bootstrapSwitch()
}),
function(o) {
    "use strict";
    function a(t) {
        o(t).on("click", e, this.close)
    }
    var e = '[data-dismiss="alert"]';
    a.VERSION = "3.3.0",
    a.TRANSITION_DURATION = 150,
    a.prototype.close = function(t) {
        var e = o(this)
          , i = (i = e.attr("data-target")) || (i = e.attr("href")) && i.replace(/.*(?=#[^\s]*$)/, "")
          , s = o(i);
        function n() {
            s.detach().trigger("closed.bs.alert").remove()
        }
        t && t.preventDefault(),
        (s = s.length ? s : e.closest(".alert")).trigger(t = o.Event("close.bs.alert")),
        t.isDefaultPrevented() || (s.removeClass("in"),
        o.support.transition && s.hasClass("fade") ? s.one("bsTransitionEnd", n).emulateTransitionEnd(a.TRANSITION_DURATION) : n())
    }
    ;
    var t = o.fn.alert;
    o.fn.alert = function(i) {
        return this.each(function() {
            var t = o(this)
              , e = t.data("bs.alert");
            e || t.data("bs.alert", e = new a(this)),
            "string" == typeof i && e[i].call(t)
        })
    }
    ,
    o.fn.alert.Constructor = a,
    o.fn.alert.noConflict = function() {
        return o.fn.alert = t,
        this
    }
    ,
    o(document).on("click.bs.alert.data-api", e, a.prototype.close)
}(window.jQuery),
$(function() {
    $(document).on("change", ".input-file", function() {
        var t = $(this).val();
        $(this).parent().find(".upload-url").val(t).focus().blur()
    })
});
